E
Size: a a a
E
O
E
O
O
E
O
EG
EG
SS
Kr
A
expected trait FirstTrait, found trait SecondTrait
pub trait FirstTrait {
fn first_fn(&self, first_struct: Rc<RefCell<dyn FirstTrait>>);
}
pub trait SecondTrait: FirstTrait {
fn second_fn(&self);
}
pub struct FirstStruct {}
impl FirstTrait for FirstStruct {
fn first_fn(&self, first_struct: Rc<RefCell<dyn FirstTrait>>) {}
}
pub struct SecondStruct {}
impl FirstTrait for SecondStruct {
fn first_fn(&self, first_struct: Rc<RefCell<dyn FirstTrait>>) {}
}
impl SecondTrait for SecondStruct {
fn second_fn(&self) {}
}
fn main() {
let first_struct: Rc<RefCell<dyn FirstTrait>> = Rc::new(RefCell::new(FirstStruct {}));
let second_struct: Rc<RefCell<dyn SecondTrait>> = Rc::new(RefCell::new(SecondStruct {}));
first_struct.borrow_mut().first_fn(Rc::clone(&second_struct));
}
IB
DD
typeid
IB
DD
IB
as_any
, или должен использоваться сам dyn Any
IB