V
Size: a a a
V
m
Э
AV
match *self {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
*self = S1 { a: None, b: None, c: None },
Some(S2 { a, b, c })
},
_ => None
}В
match *self {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
*self = S1 { a: None, b: None, c: None },
Some(S2 { a, b, c })
},
_ => None
}&mut selfAV
&mut selfV
match *self {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
*self = S1 { a: None, b: None, c: None },
Some(S2 { a, b, c })
},
_ => None
}Э
m
match *self {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
*self = S1 { a: None, b: None, c: None },
Some(S2 { a, b, c })
},
_ => None
}Э
AV
m
В
match *self {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
*self = S1 { a: None, b: None, c: None },
Some(S2 { a, b, c })
},
_ => None
}m
В
take_mut нуженЭ
let a = mem::take(&mut opstruct);
match a {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
/* do anything with a, b, c */
return;
},
_ => (),
}
opstruct = a;
В
take_mut нуженlet mut ret = None;
take_mut::take(self, |this| match this {
S1 { a: Some(a), b: Some(b), c: Some(c) } => {
ret = S2 { a, b, c };
S1::default()
},
etc => etc,
})AV
AV