在 Rust 中,@
符号被用作模式绑定的一部分,允许您在进行模式匹配的同时,将匹配的值绑定到一个变量。这是一种将模式匹配与值捕获相结合的便捷方式。
例如,假设我们有一个枚举类型表示一些交通工具的种类,以及这些交通工具的具体型号:
rustenum Vehicle { Car(String), Bicycle(String), Scooter(String), } fn main() { let my_vehicle = Vehicle::Car("Toyota".to_string()); match my_vehicle { Vehicle::Car(model @ "Toyota") => println!("It's a Toyota car, model {}", model), Vehicle::Car(model) => println!("It's some other car, model {}", model), _ => println!("It's not a car"), } }
在这个示例中,我们的 match
语句不仅检查 my_vehicle
是否是一个 Vehicle::Car
类型,而且还检查车的型号是否为 "Toyota"
。如果型号确实是 "Toyota",它将 "Toyota"
字符串绑定到变量 model
,然后在 println!
宏中使用这个变量。
这种使用 @
的模式匹配非常有用,因为它允许您在执行模式匹配的同时,直接访问和使用那些符合特定条件的值。
2024年7月17日 19:40 回复