В
Size: a a a
В
AV
В
AV
m
m
Э
В
m
Э
В
take это просто replace(dest, T::default()), чтобы дойти до ансейва придётся долезть до mem::swapЭ
M
V
В

R
use std::{mem::forget, ptr::read};
let fields = match &mut s {
S { a: Some(a), b: Some(b), c: Some(c) } => unsafe {
let fields = Some((read(a), read(b), read(c)));
forget(s);
Some(fields)
},
_ => None,
};EG
R
В