行注释

行注释以两个正斜杠//开头,并且只影响到这两个斜杠之后的内容直到行尾。

块注释

块注释以/*开头,并以*/结尾。它们可以跨越多行,并且在注释块中的所有内容都会被编译器忽略。 块注释可以被嵌套,允许在一个块注释中包含另一个块注释。

文档注释

文档注释会被用来生成文档。文档注释使用三个正斜杠///来注释单行,或使用//!来为包含它们的项(如模块或函数)写注释。对于多行文档注释,你可以使用类似于块注释的语法,但作为开始和结束符号的是/***/

标记为文档注释的注释通常位于项定义之前,可以使用markdown格式编写,并且可以被Rust的文档生成工具rustdoc使用。

pub mod outer_module {
    //!  - 模块级文档注释,置于模块头部
    //!! - 模块级文档注释,但是和上面注释置于同一行

    //!  - 模块级文档注释,但会换行

    /*!  - 模块块级文档注释 */
    /*!! - 模块级注释,但是和上面注释置于同一行 */

    /*!  - 模块块级注释,但会换行 */

    //   - 普通行注释
    ///  - 行级文档注释 ( 必须是 3 个斜杠)
    //// - 普通行注释

    /*   - 普通块级注释 */
    /**  - 块级文档注释 (精确) 2 个星号 */
    /*** - 普通注释 */

    pub mod inner_module {}

    /// mod 定义个模块
    pub mod nested_comments {
        /* Rust 中的注释内/* 可以 /* 嵌入注释 */ */ */

        // 所有三种块注释都可以相互包含或嵌套

        /*   /* */  /** */  /*! */  */
        /*!  /* */  /** */  /*! */  */
        /**  /* */  /** */  /*! */  */
        pub mod dummy_item {}
    }

    pub mod degenerate_cases {
        // 空的模块级文档注释
        //!

        // 空的模块块级文档注释
        /*!*/

        // 空的行注释
        //

        // empty outer line doc
        /// 空的行级文档注释

        // 空的块注释
        /**/

        pub mod dummy_item {}

        // 注意,此处不是空的块级文档注释,而只是一个普通的块级注释
        /***/
    }

    /*
    下面这种文档注释是不允许的,因为文档注释下面必须要有语言项,比如方法、函数等
    /// Where is my item?
    */
}