Guest User

Untitled

a guest
Nov 15th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. enum Val {
  2. Total(i32),
  3. Missed(i32),
  4. }
  5.  
  6. struct Unit {
  7. val: Val,
  8. }
  9.  
  10. fn add(t: &mut Unit, u: &Unit) {
  11. match t.val {
  12. Val::Total(i1) => match u.val {
  13. Val::Total(i2) => t.val = Val::Total(i1+i2),
  14. _ => {},
  15. },
  16. Val::Missed(i1) => match u.val {
  17. Val::Missed(i2) => t.val = Val::Missed(i1+i2),
  18. _ => {},
  19. },
  20. }
  21. }
  22.  
  23. /*
  24. // Compiler error:
  25. //25 | match (t.val, u.val) {
  26. // | ^ cannot move out of borrowed content
  27. fn add2(t: &mut Unit, u: &Unit) {
  28. match (t.val, u.val) {
  29. (Val::Total(i1), Val::Total(i2)) => t.val = Val::Total(i1+i2),
  30. (Val::Missed(i1), Val::Missed(i2)) => t.val = Val::Missed(i1+i2),
  31. _ => {},
  32. }
  33. }
  34. */
  35.  
  36. fn main() {
  37. let mut v1 = Unit{val: Val::Total(10),};
  38. let v2 = Unit{val: Val::Total(3),};
  39. add(&mut v1, &v2);
  40. match v1.val {
  41. Val::Total(i) => println!("Total: {}", i),
  42. Val::Missed(i) => println!("Missed: {}", i),
  43. }
  44. }
Add Comment
Please, Sign In to add comment