在 Rust 中,我可以使用 .as_any().downcast_ref() 将特征对象向下转换为具体类型。这工作正常,但它返回一个 &ref,而不是拥有的对象本身。
我怎样才能获得一个沮丧对象的所有权?
这是使用 Box 和 downcast() 方法实现的,该方法使用装箱的特征对象并返回一个“结果”,其中包含向下转换的对象,或者如果类型不匹配则返回错误。我需要您的特定代码来提供适合您情况的实现,但这里有一个使用示例:
use std::any::Any;
let animal: Box<dyn Any> = Box::new("Dog");
if let Ok(dog) = animal.downcast::<String>() {
println!("It's a dog named {}", dog);
} else {
println!("Not a dog");
}
Thw 代码尝试将特征对象“动物”向下转换为字符串,如果成功,我们就可以使用字符串方法