Enum safe_transmute::error::Error [−][src]
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]
pub fn copy(self) -> Result<Vec<T>, Error<'a, S, T>> where
T: TriviallyTransmutable,
[src]
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
.
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]
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: Clone, T: Clone> Clone for Error<'a, S, T>
[src]
impl<'a, S, T> Debug for Error<'a, S, T>
[src]
impl<'a, S, T> Display for Error<'a, S, T>
[src]
impl<'a, S: Eq, T: Eq> Eq for Error<'a, S, T>
[src]
impl<'a, S, T> Error for Error<'a, S, T>
[src]
fn description(&self) -> &str
[src]
pub fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0[src]
pub fn backtrace(&self) -> Option<&Backtrace>
[src]
pub fn cause(&self) -> Option<&dyn Error>
1.0.0[src]
impl<'a, S, T> From<GuardError> for Error<'a, S, T>
[src]
fn from(o: GuardError) -> Self
[src]
impl<'a, S, T> From<IncompatibleVecTargetError<S, T>> for Error<'a, S, T>
[src]
fn from(e: IncompatibleVecTargetError<S, T>) -> Self
[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]
impl<'a, S: Hash, T: Hash> Hash for Error<'a, S, T>
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<'a, S: PartialEq, T: PartialEq> PartialEq<Error<'a, S, T>> for Error<'a, S, T>
[src]
fn eq(&self, other: &Error<'a, S, T>) -> bool
[src]
fn ne(&self, other: &Error<'a, S, T>) -> bool
[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> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,