和这个问题一样,我希望函数的返回类型是一个特质(trait),而返回值是实现该特质的类型的实例。下面是一个简单的例子:
fn myfunction() -> Box<Printable> {
box TypeB{val: 2} as Box<Printable>
}
如果我不明确将我的通用特征转换为一个盒子,我会得到以下错误信息:
“错误:类型不匹配:期望 `Box` 但发现 `Box`(期望特征 Printable 但发现结构体 TypeB)”
因此我想知道:
1. 在 Rust 中返回 trait 类型是否是正常的处理方式? 2. 为什么 Rust 编译器无法自动下转换? 你有任何想法吗?我正在使用编译器的最新版本。