| #![crate_name="static_methods_crate"] | |
| #![crate_type = "lib"] | |
| pub trait read: Sized { | |
| fn readMaybe(s: String) -> Option<Self>; | |
| } | |
| impl read for isize { | |
| fn readMaybe(s: String) -> Option<isize> { | |
| s.parse().ok() | |
| } | |
| } | |
| impl read for bool { | |
| fn readMaybe(s: String) -> Option<bool> { | |
| match &*s { | |
| "true" => Some(true), | |
| "false" => Some(false), | |
| _ => None | |
| } | |
| } | |
| } | |
| pub fn read<T:read>(s: String) -> T { | |
| match read::readMaybe(s) { | |
| Some(x) => x, | |
| _ => panic!("read panicked!") | |
| } | |
| } |