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());
}