弃元
在 C# 中,弃元 表示编译器和其它工具链会忽略一个表达式的(部分)结果。
有多种上下文可以用到这个,例如最基本的,忽略一个表达式的结果。 在 C# 中,像这样:
_ = city.GetCityInformation(cityName);
在 Rust 中,忽略表达式的值 看上去完全一致:
_ = city.get_city_information(city_name);
在 C# 中,弃元也用于解构元组:
var (_, second) = ("first", "second");
Rust 中,完全一致:
let (_, second) = ("first", "second");
除了解构元组,Rust 还提供了对结构和枚举的解构,通过使用 ..
,它表示类型的剩余部分:
struct Point {
x: i32,
y: i32,
z: i32,
}
let origin = Point { x: 0, y: 0, z: 0 };
match origin {
Point { x, .. } => println!("x is {}", x), // x is 0
}
当进行模式匹配时,忽略一部分匹配表达式是很有用的,例如 C# 中:
_ = ("first", "second") switch
{
("first", _) => "first element matched",
(_, _) => "first element did not match"
};
同样的,Rust 的看起来也几乎一致:
_ = match ("first", "second")
{
("first", _) => "first element matched",
(_, _) => "first element did not match"
};