Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. enum MyOption<T> {
  2. Some(T),
  3. None
  4. }
  5.  
  6. impl<T> MyOption<T> {
  7. fn unwrap(self) -> T {
  8. match self {
  9. MyOption::Some(v) => v,
  10. MyOption::None => panic!("unwrap failed"),
  11. }
  12. }
  13.  
  14. fn from_option(v: Option<T>) -> Self {
  15. match v {
  16. None => MyOption::None,
  17. Some(v) => MyOption::Some(v),
  18. }
  19. }
  20. }
  21.  
  22. fn main() {
  23. let mut v = vec![1,2,3];
  24. while let MyOption::Some(v) = MyOption::from_option(v.pop()) {
  25. println!("{}", v);
  26. }
  27. let w: MyOption<i32> = MyOption::None;
  28. println!("{}", w.unwrap());
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement