const REFCELL_REFMUT_INTO_MUT_SLICE: ();
Expand description
ⓘ
use core::cell::{RefCell, RefMut};
let refcell = RefCell::new([0u8, 1, 2, 3]);
let core_ref_mut = refcell.borrow_mut();
let core_ref_mut = RefMut::map(core_ref_mut, |bytes| &mut bytes[..]);
// `zc_ref` now stores `core_ref_mut` internally.
let zc_ref = zerocopy::Ref::<_, [u16]>::new_slice(core_ref_mut).unwrap();
// This causes `core_ref_mut` to get dropped and synthesizes a Rust
// reference to the memory `core_ref` was pointing at.
let rust_ref_mut = zc_ref.into_mut_slice();
// UB!!! This mutates `rust_ref_mut`'s referent while it's alive.
*refcell.borrow_mut() = [0, 0, 0, 0];
println!("{:?}", rust_ref_mut);