Skip to content

Instantly share code, notes, and snippets.

@rust-play
Created September 15, 2019 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rust-play/bca9f6be72fdf044ccf2cb68cbec9915 to your computer and use it in GitHub Desktop.
Save rust-play/bca9f6be72fdf044ccf2cb68cbec9915 to your computer and use it in GitHub Desktop.
Code shared from the Rust Playground
#[derive(Clone, Debug)]
struct FamilyMember {
name: String,
is_parent: bool
}
impl FamilyMember {
fn new_member(new_name: String, parent: bool) -> FamilyMember {
FamilyMember {
name: new_name,
is_parent: parent
}
}
}
#[derive(Debug)]
struct Car {
band: String,
is_parent_only: bool,
drivers: Vec<FamilyMember>
}
impl Car {
fn new_car(name: String, parent: bool) -> Car {
Car {
band: name,
is_parent_only: parent,
drivers: Vec::<FamilyMember>::new()
}
}
}
trait SetDriver {
fn set_driver(&mut self, person: FamilyMember);
fn count_driver(&self) -> usize;
}
impl SetDriver for Car {
fn set_driver(&mut self, person: FamilyMember) {
match person.is_parent {
true => self.drivers.push(person),
_ => match self.is_parent_only {
true => println!("{} can drive by parent only!!", self.band),
_ => self.drivers.push(person)
}
}
}
fn count_driver(&self) -> usize {
self.drivers.iter().count()
}
}
fn main() {
let dad = FamilyMember::new_member("Daddy".to_string(), true);
let mom = FamilyMember::new_member("Mommy".to_string(), true);
let bob = FamilyMember::new_member("Bob".to_string(), false);
let dan = FamilyMember::new_member("Dan".to_string(), false);
let tom = FamilyMember::new_member("Tom".to_string(), false);
let mut mira = Car::new_car("Mira".to_string(), false);
let mut subaru = Car::new_car("Subaru".to_string(), false);
let mut ferrari = Car::new_car("Ferrari".to_string(), true);
//Add all to mira
mira.set_driver(dad.clone());
mira.set_driver(mom.clone());
mira.set_driver(bob.clone());
mira.set_driver(dan.clone());
mira.set_driver(tom.clone());
println!("{} car have {} drivers", mira.band, mira.count_driver());
//Add some to subaru
subaru.set_driver(dad.clone());
subaru.set_driver(bob.clone());
subaru.set_driver(tom.clone());
println!("{} car have {} drivers", subaru.band, subaru.count_driver());
//Add some to ferrari
ferrari.set_driver(dad.clone());
ferrari.set_driver(mom.clone());
ferrari.set_driver(dan.clone());
println!("{} car have {} drivers", ferrari.band, ferrari.count_driver());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment