Function repr_offset::utils::moved
source · pub const fn moved<T>(val: T) -> T
Expand description
A helper function to force a variable to move (copy if it’s a Copy type).
§Example
use repr_offset::utils::moved;
#[repr(C, packed)]
struct Packed{
foo: usize,
bar: u64,
}
let this = Packed{ foo: 21, bar: 34 };
assert_eq!( moved(this.foo), 21 );
assert_eq!( moved(this.bar), 34 );
// The code below causes undefined behavior because:
// -`assert_eq` borrows the operands implicitly.
// - Fields of `#[repr(C, packed)]` structs create unaligned references when borrowed.
// - Unaligned references are undefined behavior.
//
// unsafe{
// assert_eq!( this.foo, 21 );
// assert_eq!( this.bar, 34 );
// }