标识符
不能以数字开头,不能使用关键字和保留字。
以 r# 开头的 raw indentify 可以使用关键字作为标识符。
-
foo -
_identifier -
r#true -
Москва -
東京
标识符命名风格
-
struct/enum/union/trait类型名,enum 的variant成员,风格都是CamelCase,否则编译时警告; -
struct成员、module 名、变量名、函数名、函数参数的风格是snake_case; -
全局 const/static 变量名风格是
ALL_UPPER_CASE
注释
两种类型,均支持嵌套:
-
常规注释: 不在
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(){}
}