Module repr_offset::ext
source · Expand description
Extension traits that use FieldOffset
parameters to operate on fields.
These are the extension traits for each kind of type:
-
*const T
and*mut T
:ROExtRawAcc
andROExtRawOps
-
*mut T
:ROExtRawMutAcc
andROExtRawMutOps
§Imports
Here is the code to import all of the extension traits for convenience:
use repr_offset::{ROExtAcc, ROExtOps, ROExtRawAcc, ROExtRawMutAcc, ROExtRawOps, ROExtRawMutOps};
§Examples
§Initializing Types
use repr_offset::{
for_examples::ReprC,
off,
ROExtRawMutOps,
};
use std::mem::MaybeUninit;
type This = ReprC<String, Vec<u8>, usize, Option<char>>;
let this = unsafe{
let mut uninit = MaybeUninit::<This>::uninit();
initialize_this(uninit.as_mut_ptr());
uninit.assume_init()
};
assert_eq!(this.a, "foo");
assert_eq!(this.b, [3, 5, 8]);
assert_eq!(this.c, 13);
assert_eq!(this.d, Some('_'));
/// Initializes `this`
///
/// # Safety
///
/// The passed in pointer must point to an aligned, allocated `This` (including on the stack).
unsafe fn initialize_this(this: *mut This) {
this.f_write(off!(a), "foo".to_string());
this.f_write(off!(b), vec![3, 5, 8]);
this.f_write(off!(c), 13_usize);
this.f_write(off!(d), Some('_'));
}
Traits§
- Extension trait for (mutable) references to access fields generically, where the field is determined by a
FieldOffset
parameter. - Extension trait for (mutable) references to do generic field operations, where the field is determined by a
FieldOffset
parameter. - Extension trait for raw pointers to access fields generically, where the field is determined by a
FieldOffset
parameter. - Extension trait for mutable raw pointers to access fields generically, where the field is determined by a
FieldOffset
parameter. - Extension trait for mutable raw pointers to do generic field operations, where the field is determined by a
FieldOffset
parameter. - Extension trait for raw pointers to do generic field operations, where the field is determined by a
FieldOffset
parameter.