/src/test/auxiliary/static-methods-crate.rs

https://gitlab.com/pranith/rust · Rust · 39 lines · 25 code · 5 blank · 9 comment · 4 complexity · e14333c957f66d038e7d435828607f1e MD5 · raw file

  1. // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
  2. // file at the top-level directory of this distribution and at
  3. // http://rust-lang.org/COPYRIGHT.
  4. //
  5. // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
  6. // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
  7. // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
  8. // option. This file may not be copied, modified, or distributed
  9. // except according to those terms.
  10. #![crate_name="static_methods_crate"]
  11. #![crate_type = "lib"]
  12. pub trait read {
  13. fn readMaybe(s: String) -> Option<Self>;
  14. }
  15. impl read for isize {
  16. fn readMaybe(s: String) -> Option<isize> {
  17. s.parse().ok()
  18. }
  19. }
  20. impl read for bool {
  21. fn readMaybe(s: String) -> Option<bool> {
  22. match &*s {
  23. "true" => Some(true),
  24. "false" => Some(false),
  25. _ => None
  26. }
  27. }
  28. }
  29. pub fn read<T:read>(s: String) -> T {
  30. match read::readMaybe(s) {
  31. Some(x) => x,
  32. _ => panic!("read panicked!")
  33. }
  34. }