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