-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-// xfail-fast
use std::cmp;
+#[deriving(Show)]
enum cat_type { tuxedo, tabby, tortoiseshell }
impl cmp::Eq for cat_type {
// ok: T should be in scope when resolving the trait ref for map
struct cat<T> {
// Yes, you can have negative meows
- priv meows : int,
+ meows : int,
how_hungry : int,
name : T,
pub fn eat(&mut self) -> bool {
if self.how_hungry > 0 {
- error2!("OM NOM NOM");
+ println!("OM NOM NOM");
self.how_hungry -= 2;
return true;
} else {
- error2!("Not hungry!");
+ println!("Not hungry!");
return false;
}
}
true
}
- fn find_mut<'a>(&'a mut self, _k: &int) -> Option<&'a mut T> { fail2!() }
+ fn find_mut<'a>(&'a mut self, _k: &int) -> Option<&'a mut T> { fail!() }
fn remove(&mut self, k: &int) -> bool {
if self.find(k).is_some() {
}
}
- fn pop(&mut self, _k: &int) -> Option<T> { fail2!() }
+ fn pop(&mut self, _k: &int) -> Option<T> { fail!() }
- fn swap(&mut self, _k: int, _v: T) -> Option<T> { fail2!() }
+ fn swap(&mut self, _k: int, _v: T) -> Option<T> { fail!() }
}
impl<T> cat<T> {
pub fn get<'a>(&'a self, k: &int) -> &'a T {
match self.find(k) {
Some(v) => { v }
- None => { fail2!("epic fail"); }
+ None => { fail!("epic fail"); }
}
}
impl<T> cat<T> {
fn meow(&mut self) {
self.meows += 1;
- error2!("Meow {}", self.meows);
+ println!("Meow {}", self.meows);
if self.meows % 5 == 0 {
self.how_hungry += 1;
}
}
pub fn main() {
- let mut nyan: cat<~str> = cat::new(0, 2, ~"nyan");
+ let mut nyan: cat<~str> = cat::new(0, 2, "nyan".to_owned());
for _ in range(1u, 5) { nyan.speak(); }
- assert!(*nyan.find(&1).unwrap() == ~"nyan");
+ assert!(*nyan.find(&1).unwrap() == "nyan".to_owned());
assert_eq!(nyan.find(&10), None);
let mut spotty: cat<cat_type> = cat::new(2, 57, tuxedo);
for _ in range(0u, 6) { spotty.speak(); }