Guest User

Untitled

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