如何在Rust中将枚举用作值别名?
在下面的代码中,如何使用如何在Rust中将枚举用作值别名?,rust,Rust,在下面的代码中,如何使用Interval::Minute作为60 #[derive(Debug)] enum Interval { Minute = 60, Hour = 3600, Day = 86400, } fn main() { let interval = 120; let minute = Interval::Minute; println!("Number of minutes: {:?}", interval/minute);
Interval::Minute
作为60
#[derive(Debug)]
enum Interval {
Minute = 60,
Hour = 3600,
Day = 86400,
}
fn main() {
let interval = 120;
let minute = Interval::Minute;
println!("Number of minutes: {:?}", interval/minute);
}
也就是说,如何将其用作基础值的别名?您可以将其强制转换为整数类型:
let minute = Interval::Minute as i32;
另一个选项是在模块中使用const
s,具体取决于您尝试执行的操作:
mod interval {
pub const MINUTE: i32 = 60;
}
fn main() {
let interval = 120;
let minute = interval::MINUTE;
println!("Number of minutes: {:?}", interval/minute);
}
非常感谢。与使用int值
60
相比,interval::MINUTE
不会增加开销(零成本抽象),这也是真的吗?@Greg什么抽象interval::MINUTE
是一个整数。@Greg常量(const
)在编译时被编译器内联到使用它们的地方,因此它们在内存中没有像局部变量那样的固定地址。我不知道你是不是在问这个。那就把事情弄清楚了,谢谢you@Shepmaster这个问题是不同的,因为理想的解决方案是使用interval::MINUTE
vsinterval::MINUTE作为i32
您的字面问题是“如何使用枚举作为值”。这就是复制品。您碰巧了解了一个您喜欢的替代解决方案,这很好,但该解决方案与枚举无关。