在 Rust 中,可以将特征向下转换为拥有的类型吗?

问题描述 投票:0回答:1

在 Rust 中,我可以使用 .as_any().downcast_ref() 将特征对象向下转换为具体类型。这工作正常,但它返回一个 &ref,而不是拥有的对象本身。

我怎样才能获得一个沮丧对象的所有权?

rust lifetime
1个回答
0
投票

这是使用 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 代码尝试将特征对象“动物”向下转换为字符串,如果成功,我们就可以使用字符串方法

© www.soinside.com 2019 - 2024. All rights reserved.