标识符不能以数字开头,不能使用关键字和保留字。
*raw indentify= 以 r# 开头,后面可以使用关键字作为标识符。
举例:
- foo
- _identifier
- r#true
- Москва
- 東京
注释有两种类型:常规注释和 cargo 文档注释。
常规注释(不显示在 cargo doc
中):
//
:单行注释;/* */
: 块注释;
cargo doc
文档注释:
- INNER LINE DOC: =//! =
- INNER BLOCK DOC:
/*! */
- OUTER LINE DOC:
///
- OUTER BLOCK DOC:
/** */
INNER 是 module/crate 级别的注释,等效于 #![doc="comment"]
。
OUTER 是紧接着的 item 的注释,等效于 #[doc="comment"]
。
各种注释类型均支持嵌套。
// https://doc.rust-lang.org/reference/comments.html
//! A doc comment that applies to the implicit anonymous module of this crate
pub mod outer_module {
//! - Inner line doc
//!! - Still an inner line doc (but with a bang at the beginning)
/*! - Inner block doc */
/*!! - Still an inner block doc (but with a bang at the beginning) */
// - Only a comment
/// - Outer line doc (exactly 3 slashes)
//// - Only a comment
/* - Only a comment */
/** - Outer block doc (exactly) 2 asterisks */
/*** - Only a comment */
pub mod inner_module {}
pub mod nested_comments {
/* In Rust /* we can /* nest comments */ */ */
// All three types of block comments can contain or be nested inside any
// other type:
/* /* */ /** */ /*! */ */
/*! /* */ /** */ /*! */ */
/** /* */ /** */ /*! */ */
pub mod dummy_item {}
}
pub mod degenerate_cases {
// empty inner line doc
//!
// empty inner block doc
/*!*/
// empty line comment
//
// empty outer line doc
///
// empty block comment
/**/
pub mod dummy_item {}
// empty 2-asterisk block isn't a doc block, it is a block comment
/***/
}
/* The next one isn't allowed because outer doc comments
require an item that will receive the doc */
/// Where is my item?
#[warn(dead_code)]
pub fn test(){}
}