Rust 编译注释 Attribute
使用Java的人都知道,Java有个 annotation 注释。 Rust 也有注释,名称和C#的注释一样,叫做 attribute。
Rust 的attribute 与 Java annotation以及 C# 的attribute注释一样,是在编译阶段用于为编译提供更多描述信息,以便在编译的时候可以根据这些描述做出一些动态的选择和设置。
一、Rust 的 attribute 种类
Rust 包括两种 attribute :
第一种是:
#![attribute属性描述]
这种#后面有一个!的形式,表示这个属性值应用在当前的对象。通常,这样的attribute是针对当前文件设置的。当前文件可能包括两种对象,一个是crate,另一个可能是module。需要根据文件的上下文来判断。
判断的依据是,如果是src/mod.rs 或者 src/lib.rs 那么这个设置就是针对 crate 的,因为这两个文件是crate的root module。
例如:
#![crate_type = "lib"]
第二种是:
#[attribute属性描述]
这种前面只有#号的属性,表示属性的设置应用到属性下面的功能函数上的(当然,除了功能函数,还有其他类型的对象)。
// TODO 介绍crate 下面包含的其他子对象
例如:
#[test]
二、Rust 的 attribute 书写形式
attribute 属性描述包括三种形式:
1、用简单的attribute属性名,这些属性名是由Rust定义的,例如:
#[test]
2、用key=value的形式,key是是Rust定义的属性名,例如:
#![crate_type = "lib"]
3、用属性名(subAttribute1,subAttribute2,key=value),例如:
#[allow(non_camel_case_types, unused)] #[cfg(target_os="linux")]
//TODO 介绍Rust中现存的可以使用的 attribute
一、语法 attribute : '#' '!' ? '[' meta_item ']' ;meta_item : ident [ '=' literal | '(' meta_seq ')' ] ...