Je viens de commencer avec Rust. J'aimerais créer un setter qui acceptera un trait comme paramètre. Pour illustrer l'idée
pub trait Engine {
fn start() -> bool;
}
struct Car {
engine: Box<dyn Engine>,
}
impl Car {
pub fn new() -> Self {
let engine = Box::new(DummyEngine {});
Self {
engine,
}
}
pub fn set_engine(&mut self, engine: &dyn Engine) {
self.engine = Box::new(engine);
}
}
Le code setter se plaint :
the trait bound `&dyn Engine: Engine` is not satisfied
required for the cast to the object type `dyn Engine` rustcE0277
Par ailleurs, comment éviter l'utilisation d'un moteur par défaut factice ? Disons qu'une voiture n'a pas besoin de moteur. Doit-elle être enveloppée dans un Option
?