ran*_*and 3 pattern-matching rust
好像你不能.如果没有,是否有计划支持添加它或运行时类型信息(RTTI)?
struct Bus;
struct Car;
struct Person;
fn main() {
let x = Bus;
//or more realistically, let x = function_with_multiple_return_types();
match x {
Car => {
// ...
}
Bus => {
// this gets executed
}
Person => {
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子很简单.在现实生活中,只有x多种类型才有用.例如let x = function_with_multiple_return_types();.
没有人能够100%准确,一个功能会或不会说永远实现,但我可以用100%的信念说,这将永远不会被执行.
这是为什么?因为提出的语法没有任何好处.Rust是一种静态类型的语言.这意味着编译器知道变量的类型是什么.任何分支Bus都不可能被执行.变量不可能有多种类型!为什么语言会改变以允许您添加永远不会被使用的代码?那不是很有用.
一般来说,匹配语句和模式匹配仅在存在多种可能的变体时才有用.这就是Rust的原因enum; 允许一组固定的动态选择(也就是在运行时制作).
如果你需要一套开放的动态决策,那就是特质(也许是专业化).甚至还有一个特性允许任何具体类型.
正如在评论中提到的,你可以使用特质对象向下转换是通过提供Any,但没有使用的能力match.
也可以看看: