我的目标是将针对我的结构的方法调用委托给 Trait 的方法,其中 Trait 对象位于Rc
of 中RefCell
。
我试图遵循这个问题的建议: 如何从 Rc<RefCell<A>> 获取 &A 引用?
我得到一个编译错误。
use std::rc::Rc;
use std::cell::RefCell;
use std::fmt::*;
use std::ops::Deref;
pub struct ShyObject {
pub association: Rc<RefCell<dyn Display>>
}
impl Deref for ShyObject {
type Target = dyn Display;
fn deref<'a>(&'a self) -> &(dyn Display + 'static) {
&*self.association.borrow()
}
}
fn main() {}
这是错误:
error[E0515]: cannot return value referencing temporary value
--> src/main.rs:13:9
|
13 | &*self.association.borrow()
| ^^-------------------------
| | |
| | temporary value created here
| returns a value referencing data owned by the current function
我的示例Display
用作特征;实际上,我有一个带有十几种方法的特征。我试图避免必须实现所有这些方法的样板,而只是在每次调用中深入到 Trait 对象。