标识符 #
不能以数字开头,不能使用关键字和保留字。
以 r# 开头的 raw indentify 可以使用关键字作为标识符。
举例:
foo_identifierr#trueМосква東京
标识符命名风格 #
struct/enum/union类型命名惯例是CamelCase,否则编译时警告;struct成员的命名惯例是snake_case;trait类型使用CameCase风格;enum的类型名和variant成员名都是CameCase风格。- 变量名、函数名和函数参数是
snake_case风格。
注释 #
两种类型,均支持嵌套:
-
常规注释: 不在
cargo doc中显示://:单行注释;/* */: 块注释;
-
文档注释:在
cargo doc中显示:- INNER LINE DOC:
//! - INNER BLOCK DOC:
/*! */ - OUTER LINE DOC:
/// - OUTER BLOCK DOC:
/** */
- INNER LINE 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(){}
}