implémentation de Trait dans un module rust
Bonjour,
je débute avec Rust et j'ai une erreur dont je ne comprends pas la raison.
Rust m'indique que ma méthode run() n'ai pas visible dans le scope. Evidement, en suppriment la définition mod { ...} la méthode fonctionne correctement.
voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
mod perso {
#[derive(Debug)]
pub struct Perso {
nom : String,
age : u32,
}
impl Perso {
pub fn new(nom : &str, age:u32) -> Perso {
Perso{nom:nom.to_string(), age}
}
pub fn grow(&mut self, growing:u32) {
self.age += growing;
}
}
pub trait Move {
fn run(&self);
}
impl Move for Perso {
fn run(&self) {
println!("perso run !");
}
}
}
fn main() {
let mut t = perso::Perso::new("michael", 50);
t.grow(15);
println!("perso : {:?}",t);
t.run(); // ERROR : no method named `run` found for struct `perso::Perso` in the current scope
} |
Je comprends bien que rust me dit qu'il ne trouve pas la méthode dans le scope, mais je ne comprends pas pourquoi et comment y remédier.
Merci de votre aide et bonne journée.
Bringer