Function repr_offset::utils::moved [−][src]
pub const fn moved<T>(val: T) -> T
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 ); // }