Skip to content

Instantly share code, notes, and snippets.

@pzol
Last active August 29, 2015 14:12
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 pzol/93ab7ad9447513fdfad0 to your computer and use it in GitHub Desktop.
Save pzol/93ab7ad9447513fdfad0 to your computer and use it in GitHub Desktop.
#[deriving(Show)]
struct Monster {
name: String,
hp: uint
}
struct Game {
monsters: Vec<Box<Monster>>
}
impl Game {
pub fn new() -> Game {
Game { monsters: vec![] }
}
pub fn add_monster(&mut self, monster: Monster) {
self.monsters.push(box monster)
}
pub fn fight(&mut self) {
let (left, right) = self.monsters.split_at_mut(1);
let m1 = &mut left[0];
let m2 = &right[0];
m1.hp = 9;
}
pub fn foo2(&mut self) {
let (idx, dmg ) = {
let m2 = &self.monsters[1];
let m1 = &self.monsters[0];
(0u, 9u)
};
self.monsters[idx].hp -= dmg;
}
}
#[test]
fn test_monsters() {
let mut foo = Game::new();
foo.add_monster(Monster { name: "Guss".to_string(), hp: 10 });
foo.add_monster(Monster { name: "Biff".to_string(), hp: 10 });
foo.fight();
panic!("monster {}", foo.monsters[0]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment