pub struct VTableIndirect {
pub display: Option<unsafe fn(OxPtrConst, &mut Formatter<'_>) -> Option<Result>>,
pub debug: Option<unsafe fn(OxPtrConst, &mut Formatter<'_>) -> Option<Result>>,
pub hash: Option<unsafe fn(OxPtrConst, &mut HashProxy<'_>) -> Option<()>>,
pub invariants: Option<unsafe fn(OxPtrConst) -> Option<Result<(), String>>>,
pub parse: Option<unsafe fn(&str, OxPtrMut) -> Option<Result<(), ParseError>>>,
pub parse_bytes: Option<unsafe fn(&[u8], OxPtrMut) -> Option<Result<(), ParseError>>>,
pub try_from: Option<unsafe fn(OxPtrMut, &'static Shape, PtrConst) -> Option<Result<(), String>>>,
pub try_into_inner: Option<unsafe fn(OxPtrMut) -> Option<Result<PtrMut, String>>>,
pub try_borrow_inner: Option<unsafe fn(OxPtrConst) -> Option<Result<PtrMut, String>>>,
pub partial_eq: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<bool>>,
pub partial_cmp: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<Option<Ordering>>>,
pub cmp: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<Ordering>>,
}Expand description
VTable for generic containers with runtime trait resolution.
Uses OxPtrConst/OxPtrMut as receivers to access inner type’s shape at runtime.
Used for Vec<T>, Option<T>, Arc<T>, etc.
Returns Option to indicate whether the operation is supported
(the inner type may not implement the required trait).
§Per-type operations
Note that drop_in_place, default_in_place, and clone_into are NOT in this struct.
These operations must be monomorphized per-type and live in TypeOps on the crate::Shape.
This allows vtables to be shared across generic instantiations (e.g., one vtable for all Vec<T>).
§Safety
All function pointers are unsafe fn because they operate on raw pointers.
Callers must ensure:
- The pointer points to a valid instance of the expected type
- The pointer has the correct alignment for the type
- For mutable operations, the caller has exclusive access to the data
- The lifetime of the data extends for the duration of the operation
Fields§
§display: Option<unsafe fn(OxPtrConst, &mut Formatter<'_>) -> Option<Result>>Display function - formats value using Display trait.
debug: Option<unsafe fn(OxPtrConst, &mut Formatter<'_>) -> Option<Result>>Debug function - formats value using Debug trait.
hash: Option<unsafe fn(OxPtrConst, &mut HashProxy<'_>) -> Option<()>>Hash function - hashes value using Hash trait via HashProxy.
invariants: Option<unsafe fn(OxPtrConst) -> Option<Result<(), String>>>Invariants function - checks type invariants.
parse: Option<unsafe fn(&str, OxPtrMut) -> Option<Result<(), ParseError>>>Parse function - parses value from string into destination.
parse_bytes: Option<unsafe fn(&[u8], OxPtrMut) -> Option<Result<(), ParseError>>>Parse bytes function - parses value from byte slice into destination. Used for binary formats where types have a more efficient representation.
try_from: Option<unsafe fn(OxPtrMut, &'static Shape, PtrConst) -> Option<Result<(), String>>>Try from function - converts from another value type. Arguments: (dst, src_shape, src_ptr)
try_into_inner: Option<unsafe fn(OxPtrMut) -> Option<Result<PtrMut, String>>>Try into inner function - extracts inner value (consuming).
try_borrow_inner: Option<unsafe fn(OxPtrConst) -> Option<Result<PtrMut, String>>>Try borrow inner function - borrows inner value.
partial_eq: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<bool>>PartialEq function - tests equality with another value.
partial_cmp: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<Option<Ordering>>>PartialOrd function - compares with another value.
cmp: Option<unsafe fn(OxPtrConst, OxPtrConst) -> Option<Ordering>>Ord function - total ordering comparison.
Implementations§
Trait Implementations§
Source§impl Clone for VTableIndirect
impl Clone for VTableIndirect
Source§fn clone(&self) -> VTableIndirect
fn clone(&self) -> VTableIndirect
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more