rust的trait对象的引用怎么作为参数进行传递?
时间: 2024-05-11 19:17:34 浏览: 235
可以将 trait 对象的引用作为参数进行传递,但需要使用 `&dyn` 关键字指明 trait 的类型,例如:
```rust
trait MyTrait {
fn do_something(&self);
}
struct MyStruct;
impl MyTrait for MyStruct {
fn do_something(&self) {
println!("doing something");
}
}
fn call_do_something(obj: &dyn MyTrait) {
obj.do_something();
}
fn main() {
let my_obj = MyStruct;
call_do_something(&my_obj);
}
```
在这个例子中,`MyStruct` 实现了 `MyTrait` trait,`call_do_something` 函数接受一个 `&dyn MyTrait` 类型的参数,该参数引用了 `MyStruct` 对象。函数内部通过该参数调用了 `MyTrait` 的方法。
阅读全文