二十、其他
Published on
属性(Attribute)
属性是提供给模块、箱或其它项目的元数据。
dead_code
用于关闭编译器对于无用代码的警告。
#[allow(dead_code)]
fn unused_function() {}
crate_type与crate_name
用于指定箱的类型与名称。
#![crate_type = "lib"]
#![crate_name = "rary"]
cfg
用于检查设置。
// 在符合条件时才编译
#[cfg(target_os = "linux")]
fn are_you_on_linux() {
println!("You are running linux!");
}
// 在程序中使用宏获取设置
if cfg!(target_os = "linux") {
println!("Yes. It's definitely linux!");
} else {
println!("Yes. It's definitely *not* linux!");
}
可以使用自定义属性:
#[cfg(some_condition)]
fn conditional_function() {
println!("condition met!");
}
但是需要在编译时手动传入:
rustc --cfg some_condition custom.rs && ./custom
面向对象编程(OOP)特点
怎样才算OOP语言这一点并没有明确的共识。虽然Rust的语法与普通的OOP语言相差较大,但是它仍然具有OOP的主要特点。
- 对象包含数据与行为:结构与枚举中包含数据,使用impl块可以为它们实现方法,因此可以将结构和枚举视为对象
- 封装:使用pub可以控制结构内部变量/方法的可见性
- 继承:继承的作用是代码复用与多态,虽然Rust本身并不提供继承机制,但是通过使用特性可以实现这两个功能
原始标识符
原始标识符允许使用关键字作为标识符。这在Rust引入新关键字,而某些旧版本代码使用了同名标识符时非常有用。
foo::r#try();