This is an old revision of the document!


Lab 2 - Rust Traits and Secure References

Workpoint 3

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());
}
saiot/laboratoare/02.1603310746.txt.gz ยท Last modified: 2020/10/21 23:05 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0