Enum safe_transmute::error::Error
source · pub enum Error<'a, S, T> {
Guard(GuardError),
Unaligned(UnalignedError<'a, S, T>),
IncompatibleVecTarget(IncompatibleVecTargetError<S, T>),
InvalidValue,
}
Expand description
A transmutation error. This type describes possible errors originating from operations in this crate. The two type parameters represent the source element type and the target element type respectively.
§Examples
assert_eq!(transmute_bool_pedantic(&[0x05]), Err(Error::InvalidValue));
Variants§
Guard(GuardError)
The data does not respect the target type’s boundaries.
Unaligned(UnalignedError<'a, S, T>)
The given data slice is not properly aligned for the target type.
IncompatibleVecTarget(IncompatibleVecTargetError<S, T>)
The data vector’s element type does not have the same size and minimum alignment as the target type.
Does not exist without the alloc
feature.
InvalidValue
The data contains an invalid value for the target type.
Implementations§
source§impl<'a, S, T> Error<'a, S, T>
impl<'a, S, T> Error<'a, S, T>
sourcepub fn copy(self) -> Result<Vec<T>, Error<'a, S, T>>where
T: TriviallyTransmutable,
pub fn copy(self) -> Result<Vec<T>, Error<'a, S, T>>where
T: TriviallyTransmutable,
Reattempt the failed transmutation if the failure was caused by either an unaligned memory access, or an incompatible vector element target.
Otherwise return self
.
sourcepub unsafe fn copy_unchecked(self) -> Result<Vec<T>, Error<'a, S, T>>
pub unsafe fn copy_unchecked(self) -> Result<Vec<T>, Error<'a, S, T>>
Reattempt the failed non-trivial transmutation if the failure was caused by either an unaligned memory access, or an incompatible vector element target.
Otherwise return self
.
§Safety
The source data needs to correspond to a valid contiguous sequence of
T
values.
sourcepub fn without_src<'z>(self) -> Error<'z, S, T>
pub fn without_src<'z>(self) -> Error<'z, S, T>
Create a new error which discards runtime information about the source data, by making it point to an empty slice. This makes the error value live longer than the context of transmutation.