【发布时间】:2023-01-09 06:59:21
【问题描述】:
在将值传递给以 impl Trait 作为参数的函数后,如何继续使用值的所有权?我已经尝试过将参数作为参考传递并且没有 & 但它们都不起作用。
trait Noise{
fn make_noise(&self);
fn call_by_name(&self);
}
struct Person {
name: String,
}
impl Noise for Person{
fn make_noise(&self){
println!("Hello");
}
fn call_by_name(&self) {
println!("Hey, {:?}, how are you doing?", self.name)
}
}
fn talk(noisy: impl Noise){
noisy.make_noise();
}
fn main() {
let john_person= Person{name:String::from("John")};
talk(john_person);
john_person.call_by_name(); // ERROR WHEN CALLING THE FUNCTION.
}
【问题讨论】:
标签: rust borrow-checker trait-objects