问题描述
所以我将特征对象存储在 Rc::Weak 引用后面,作为 Rust 中观察者模式实现的一部分,我遇到了一个问题,我尝试在 Vec 中存储 Weak
export default ({ SSRtasks }) => {
const [ tasks,setTasks ] = useState(SSRtasks)
const { data: freshTasks,mutate } = useSwr('/api/tasks')
useEffect(() => freshTasks && setTasks(freshTasks),[ freshTasks ])
return (
<ul>{tasks.map(task => <li>{task}</li>)}</ul>
)
}
export const getServerSideProps = async ({ req,res }) => {
const SSRtasks = Task.find({ owner: id })
return { props: { SSRtasks } }
}
这是错误:
use std::rc::{Rc,Weak};
trait MyTrait {}
struct Concrete {}
impl MyTrait for Concrete {}
struct Bucket {
vec: Vec<Weak<dyn MyTrait>>,}
impl Bucket {
pub fn push(&mut self,to_push: Weak<dyn MyTrait>) {
self.vec.push(to_push);
}
}
fn main() {
let bucket = Bucket { vec: Vec::new(),};
let concrete = Concrete {};
bucket.push(Rc::downgrade(&Rc::new(concrete)));
}
我不明白的是,实现 MyTrait 的 Concrete 如何不被接受为“dyn MyTrait”特征对象。具体的是 MyTrait,所以......这里发生了什么?
目前在稳定版上运行 rustc 1.49.0,但这个错误也发生在操场上。
感谢您的时间。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)