This is an old revision of the document!
struct Professor { firstname: String, lastname: String, age: usize, } struct Student { firstname: String, lastname: String, age: usize, } trait Person { fn get_name (&self) -> String; fn get_job (&self) -> String; } impl Professor { fn new(firstname: String, lastname: String, age: usize) -> Professor { Professor { firstname: firstname, lastname: lastname, age:age } } } impl Person for Professor { fn get_name (&self) -> String { format!("{} {}", self.firstname, self.lastname) } fn get_job (&self) -> String { "student".to_string() } } impl Student { fn new(firstname: String, lastname: String, age: usize) -> Student { Student { firstname: firstname, lastname: lastname, age:age } } } impl Person for Student { fn get_name (&self) -> String { format!("{}", self.firstname) } fn get_job (&self) -> String { return "profesor".to_string(); } } fn main () { // make a professor let p = Professor::new (String::from("John"), String::from("Doe"), 20); // make a student let s = Student::new ("Johnny".to_string(), "Doe".to_string(), 50); // println! ("{:?}", p); // println! ("{:?}", s); println! ("{} is a {}", p.get_name (), p.get_job()); println! ("{} is a {}", s.get_name (), s.get_job()); }