【发布时间】:2020-12-31 09:42:48
【问题描述】:
假设有这样的代码:
trait A {
fn something(&self) -> String
}
struct B {
things: Vec<u64>
}
struct C {
thing: Box<&dyn A>
}
impl A for B { ... }
fn create_thing() -> B {
//
}
impl C {
pub fn new() {
let thing = create_thing();
C { thing }
}
}
我的问题是 create_thing 的返回类型究竟应该是什么才能与 Box 匹配,或者返回值应该如何包装以匹配 盒子?
等效的 C# 代码如下所示:
interface A {}
class B : A {}
class C {
public A field;
public C() {
this.field = new B();
}
}
【问题讨论】:
-
你为什么要
Box<&dyn A>而不是Box<dyn A>? -
这是一个错误