Enum safe_transmute::error::Error [−][src]
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.
The data contains an invalid value for the target type.
Implementations
impl<'a, S, T> Error<'a, S, T>
[src]
impl<'a, S, T> Error<'a, S, T>
[src]pub fn copy(self) -> Result<Vec<T>, Error<'a, S, T>> where
T: TriviallyTransmutable,
[src]
pub fn copy(self) -> Result<Vec<T>, Error<'a, S, T>> where
T: TriviallyTransmutable,
[src]Reattempt the failed transmutation if the failure was caused by either an unaligned memory access, or an incompatible vector element target.
Otherwise return self
.
pub unsafe fn copy_unchecked(self) -> Result<Vec<T>, Error<'a, S, T>>
[src]
pub unsafe fn copy_unchecked(self) -> Result<Vec<T>, Error<'a, S, T>>
[src]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.
pub fn without_src<'z>(self) -> Error<'z, S, T>
[src]
pub fn without_src<'z>(self) -> Error<'z, S, T>
[src]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.
Trait Implementations
impl<'a, S, T> Error for Error<'a, S, T>
[src]
impl<'a, S, T> Error for Error<'a, S, T>
[src]fn description(&self) -> &str
[src]
fn description(&self) -> &str
[src]use the Display impl or to_string()
fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0[src]
fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0[src]The lower-level source of this error, if any. Read more
impl<'a, S, T> From<GuardError> for Error<'a, S, T>
[src]
impl<'a, S, T> From<GuardError> for Error<'a, S, T>
[src]fn from(o: GuardError) -> Self
[src]
fn from(o: GuardError) -> Self
[src]Performs the conversion.
impl<'a, S, T> From<IncompatibleVecTargetError<S, T>> for Error<'a, S, T>
[src]
impl<'a, S, T> From<IncompatibleVecTargetError<S, T>> for Error<'a, S, T>
[src]fn from(e: IncompatibleVecTargetError<S, T>) -> Self
[src]
fn from(e: IncompatibleVecTargetError<S, T>) -> Self
[src]Performs the conversion.
impl<'a, S, T> From<UnalignedError<'a, S, T>> for Error<'a, S, T>
[src]
impl<'a, S, T> From<UnalignedError<'a, S, T>> for Error<'a, S, T>
[src]fn from(o: UnalignedError<'a, S, T>) -> Self
[src]
fn from(o: UnalignedError<'a, S, T>) -> Self
[src]Performs the conversion.
impl<'a, S: Eq, T: Eq> Eq for Error<'a, S, T>
[src]
impl<'a, S, T> StructuralEq for Error<'a, S, T>
[src]
impl<'a, S, T> StructuralPartialEq for Error<'a, S, T>
[src]
Auto Trait Implementations
impl<'a, S, T> RefUnwindSafe for Error<'a, S, T> where
S: RefUnwindSafe,
T: RefUnwindSafe,
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<'a, S, T> Send for Error<'a, S, T> where
S: Send + Sync,
T: Send,
S: Send + Sync,
T: Send,
impl<'a, S, T> Sync for Error<'a, S, T> where
S: Sync,
T: Sync,
S: Sync,
T: Sync,
impl<'a, S, T> Unpin for Error<'a, S, T> where
S: Unpin,
T: Unpin,
S: Unpin,
T: Unpin,
impl<'a, S, T> UnwindSafe for Error<'a, S, T> where
S: RefUnwindSafe + UnwindSafe,
T: UnwindSafe,
S: RefUnwindSafe + UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more