【发布时间】:2015-12-11 04:01:10
【问题描述】:
我想创建一个结构,它可以包装另一种类型,但可以采用实现给定特征的值的拥有和借用版本。
例如,假设我有 Foobar 的特质:
trait Foobar {
fn foobar(&self);
}
我现在想创建一个结构来包装此特征的值或借用引用:
struct FoobarWrapper<T: Foobar> {
wrapped: T,
extra_stuff: Stuff
}
在这里,鉴于 impl Foobar for Baz,我希望 FoobarWrapper 与 Baz 和 &Baz 一起使用。
我想出了一种可能可行的解决方案,但我不知道它是否符合习惯,并且只需这样做:
impl<'a, T: Foobar> Foobar for &'a T {
fn foobar(&self) {
(*self).foobar()
}
}
如果我没记错的话,这对实现 Foobar 的值的任何引用也是 Foobar 的实现者。但这是你应该这样做的方式吗?
【问题讨论】:
标签: rust traits borrow-checker