相关疑难解决方法(0)

特征中的项目只能在特征已实现且在范围内时使用

我尝试从Heads-up Design Patterns 中实现观察者模式,它最初是用 Java 编写的:

use std::cell::RefCell;
use std::rc::Rc;
use std::borrow::BorrowMut;

trait Subject {
    fn registerObserver(&mut self, observer: Rc<RefCell<Observer>>);
    fn removeObserver(&mut self, observer: Rc<RefCell<Observer>>);
    fn notifyObserver(&self, observer: Rc<RefCell<Observer>>);
}

trait Observer {
    fn update(&mut self, data: f32);
}


struct Teacher {
    observers: Vec<Rc<RefCell<Observer>>>,
    data: f32,
}
impl Teacher {
    pub fn print(&self) {
        println!("teacher = {:}", self.data);
    }
}
impl Subject for Teacher {
    fn registerObserver(&mut self, observer: Rc<RefCell<Observer>>) {
        self.observers.push(observer);
    }
    fn removeObserver(&mut self, …
Run Code Online (Sandbox Code Playgroud)

scope traits rust

4
推荐指数
1
解决办法
6412
查看次数

标签 统计

rust ×1

scope ×1

traits ×1