面试题答案
一键面试完全限定语法介绍
在Rust中,当存在多个trait且有继承关系,以及多个结构体实现这些trait时,为确保调用到预期的trait方法,可使用完全限定语法。其一般形式为:Trait::function(receiver_if_method, other_arguments)
。
代码示例
// 定义基础trait
trait Animal {
fn speak(&self);
}
// 定义继承自Animal的trait
trait Dog: Animal {
fn bark(&self);
}
// 定义结构体并实现Animal和Dog trait
struct Labrador;
impl Animal for Labrador {
fn speak(&self) {
println!("This animal makes a sound.");
}
}
impl Dog for Labrador {
fn bark(&self) {
println!("Woof!");
}
}
fn main() {
let lab = Labrador;
// 使用完全限定语法调用Animal的speak方法
<Labrador as Animal>::speak(&lab);
// 使用完全限定语法调用Dog的bark方法
<Labrador as Dog>::bark(&lab);
}
在上述代码中:
- 首先定义了
Animal
trait和继承它的Dog
trait。 - 然后
Labrador
结构体实现了这两个trait。 - 在
main
函数中,通过完全限定语法<Labrador as Animal>::speak(&lab)
和<Labrador as Dog>::bark(&lab)
分别调用了Animal
的speak
方法和Dog
的bark
方法,确保调用到预期的trait方法。