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() {
}
接下来,让我们谈论一些模块的高级应用。