1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#![crate_type="lib"] use std::cell::RefCell; pub struct Window<Data>{ pub data: RefCell<Data> } impl<Data: Update> Window<Data> { pub fn update(&self, e: i32) { match e { 1 => self.data.borrow_mut().update(), _ => {} } } } pub trait Update { fn update(&mut self); }