【Rust】trait-消除歧義
阿新 • • 發佈:2021-12-24
環境
- Rust 1.56.1
- VSCode 1.61.2
概念
參考:https://doc.rust-lang.org/rust-by-example/trait/disambiguating.html
示例
如果有兩個同名的方法,這時呼叫的時候,需要使用指定呼叫的型別。
靜態返回
trait UsernameWidget { fn get(&self) -> String; } trait AgeWidget { fn get(&self) -> u8; } struct Form { username: String, age: u8, } impl UsernameWidget for Form { fn get(&self) -> String { self.username.clone() } } impl AgeWidget for Form { fn get(&self) -> u8 { self.age } } fn main() { let form = Form { username: "rustacean".to_owned(), age: 28, }; // 指定型別呼叫 let username = UsernameWidget::get(&form); assert_eq!("rustacean".to_owned(), username); let age = <Form as AgeWidget>::get(&form); assert_eq!(28, age); }
總結
瞭解了 Rust 中出現同名方法時,怎麼呼叫特定的某一個方法。