当前位置:嗨网首页>书籍在线阅读

41-结构体、枚举和特征中的常量

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.8 结构体、枚举和特征中的常量

结构体、枚举和特征定义也可以与常量字段成员一起提供,它们可用于需要在它们之间共享常量的情况。举个例子,我们有一个Circle特征,这个特征被不同的圆形类型实现。我们可以将一个PI常量添加到Circle特征中,该特征可以由具有area属性的任何类型共享,并根据PI的值来计算面积:

// trait_constants.rs
trait Circular {
    const PI: f64 = 3.14;
    fn area(&self) -> f64;
}
struct Circle {
    rad: f64
}
impl Circular for Circle {
    fn area(&self) -> f64 {
        Circle::PI * self.rad * self.rad
    }
}
fn main() {
    let c_one = Circle { rad: 4.2 };
    let c_two = Circle { rad: 75.2 };
    println!("Area of circle one: {}", c_one.area());
    println!("Area of circle two: {}", c_two.area());
}

我们还可以在结构体和枚举中使用常量:

// enum_struct_consts.rs
enum Item {
    One,
    Two
}
struct Food {
    Cake,
    Chocolate
}
impl Item {
    const DEFAULT_COUNT: u32 = 34;
}
impl Food {
    const FAVORITE_FOOD: &str = "Cake";
}
fn main() {
}

接下来,让我们谈论一些模块的高级应用。