假设我有enum
:
enum Foobar {
Foo(i32),
Bar(f64)
}
我还有一个以Foobar
为参数的函数:
fn foo(x: &mut Foobar) {
match x {
Foobar::Foo(i32) => { /* do something */ },
Foobar::Bar(f64) => { /* panic */ }
}
}
如果函数的调用者将Bar
变量传递给函数而不使用编译器插件,是否可能抛出编译时错误?
答案 0 :(得分:4)
没有
即使是编译器插件(我认为你的意思是" lint")也不能涵盖所有情况。
如果您想要将某个特定数据传递给该函数,那么请更改类型以使其实际无效:定义{{的兄弟姐妹1}}没有Foobar
变体,以及两者之间的一些转换。
在Rust中没有简单或自动的方法来做到这一点;你只需做硬yakka。或者等待细化类型,但我不建议这样做。