Wang's blog

二十、其他

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();