pub trait RawValConvertible: Into<RawVal> + TryFrom<RawVal> {
    // Required methods
    fn is_val_type(v: RawVal) -> bool;
    unsafe fn unchecked_from_val(v: RawVal) -> Self;

    // Provided method
    fn try_convert(v: RawVal) -> Option<Self> { ... }
}
Expand description

Trait abstracting over types that can be converted into RawVal, similar to TryFrom but with a different signature that enables generating slightly more efficient conversion code. An implementation of TryFrom<RawVal> is also provided for any type that implements RawValConvertible.

Required Methods§

source

fn is_val_type(v: RawVal) -> bool

Returns true if v is in a union state compatible with Self.

source

unsafe fn unchecked_from_val(v: RawVal) -> Self

Converts the bits making up a RawVal into Self without checking that the RawVal is tagged correctly, assuming that such a check has been performed elsewhere. It is the caller’s responsibility to arrange that such checks have occurred before calling unchecked_from_val, which is why it is marked as unsafe (it does not represent a risk of memory-unsafety, merely “serious logic errors”).

Provided Methods§

source

fn try_convert(v: RawVal) -> Option<Self>

Attempt a conversion from RawVal to Self, returning None if the provided RawVal is not tagged correctly. By default this calls Self::is_val_type and Self::unchecked_from_val, but it can be customized on a type-by-type basis to avoid redundant tag tests and produce more efficient code, as it is done for Static values like bool.

Implementations on Foreign Types§

source§

impl RawValConvertible for ()

source§

impl RawValConvertible for bool

source§

impl RawValConvertible for u32

source§

impl RawValConvertible for i32

Implementors§