Skip to content

Instantly share code, notes, and snippets.

@vilmibm
Created March 18, 2016 07:05
Show Gist options
  • Save vilmibm/5ae7eb6b67e272478585 to your computer and use it in GitHub Desktop.
Save vilmibm/5ae7eb6b67e272478585 to your computer and use it in GitHub Desktop.
#[derive(Debug)]
struct Skill {
name: &'static str,
level: i32,
}
impl Skill {
fn improve(&mut self) -> &mut Self {
self.level += 1;
self
}
fn get_name(&self) -> &'static str {
self.name
}
}
fn dbg(skills:&Vec<Skill>) -> () {
for skill in skills {
println!("{:?}", skill);
};
}
fn main() {
// Two skills, neither declared as mutable:
let skill_one = Skill {
name: "sitting",
level: 100,
};
let skill_two = Skill {
name: "chillin",
level: 666,
};
// mutable vector of those skills:
let mut skills = vec![skill_one, skill_two];
dbg(&skills);
// mutating away:
skills[0].level += 1;
dbg(&skills);
skills[1].improve();
dbg(&skills);
skills[0].improve();
dbg(&skills);
println!(" {}", skills[1].get_name());
println!(" {}", skills[1].level);
println!(" {}", skills[1].improve().get_name());
println!(" {}", skills[1].level);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment