Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum Val {
- Total(i32),
- Missed(i32),
- }
- struct Unit {
- val: Val,
- }
- fn add(t: &mut Unit, u: &Unit) {
- match t.val {
- Val::Total(i1) => match u.val {
- Val::Total(i2) => t.val = Val::Total(i1+i2),
- _ => {},
- },
- Val::Missed(i1) => match u.val {
- Val::Missed(i2) => t.val = Val::Missed(i1+i2),
- _ => {},
- },
- }
- }
- /*
- // Compiler error:
- //25 | match (t.val, u.val) {
- // | ^ cannot move out of borrowed content
- fn add2(t: &mut Unit, u: &Unit) {
- match (t.val, u.val) {
- (Val::Total(i1), Val::Total(i2)) => t.val = Val::Total(i1+i2),
- (Val::Missed(i1), Val::Missed(i2)) => t.val = Val::Missed(i1+i2),
- _ => {},
- }
- }
- */
- fn main() {
- let mut v1 = Unit{val: Val::Total(10),};
- let v2 = Unit{val: Val::Total(3),};
- add(&mut v1, &v2);
- match v1.val {
- Val::Total(i) => println!("Total: {}", i),
- Val::Missed(i) => println!("Missed: {}", i),
- }
- }
Add Comment
Please, Sign In to add comment