Struct abi_stable::std_types::RBoxError_

source ·
#[repr(C)]
pub struct RBoxError_<M = SyncSend> { /* private fields */ }
Expand description

Ffi-safe version of Box<dyn std::error::Error + 'static> whose Send + Syncness is determined by the M type parameter.

§Examples

§Converting from and into Box<dyn Error + ...>

use std::{convert::TryFrom, error::Error as ErrorTrait};

use abi_stable::std_types::{RBox, RBoxError, SendRBoxError, UnsyncRBoxError};

{
    let from: Box<dyn ErrorTrait> = "hello, error".into();
    let rbox = UnsyncRBoxError::from_box(from);
    let _: Box<dyn ErrorTrait> = rbox.into_box();
}

{
    let arr_err = <[(); 0]>::try_from(&[()][..]).unwrap_err();
    let from: Box<dyn ErrorTrait + Send> = Box::new(arr_err);
    let rbox = SendRBoxError::from_box(from);
    let _: Box<dyn ErrorTrait + Send> = rbox.into_box();
}

{
    let arr_err = <[(); 0]>::try_from(&[()][..]).unwrap_err();
    let from: Box<dyn ErrorTrait + Send + Sync> = Box::new(arr_err);
    let rbox = RBoxError::from_box(from);
    let _: Box<dyn ErrorTrait + Send + Sync> = rbox.into_box();
}

§Downcasting by value

use std::num::{ParseFloatError, ParseIntError};

use abi_stable::std_types::{RBox, RBoxError};

// Constructing a `RBoxError` from a `Box<dyn Error>`, then downcasting to a `ParseIntError`.
{
    let parse_err = "".parse::<u64>().unwrap_err();
    let dyn_err: Box<dyn std::error::Error + Send + Sync + 'static> =
        Box::new(parse_err.clone());
    let err = RBoxError::from_box(dyn_err);

    assert_eq!(
        err.downcast::<ParseIntError>().unwrap(),
        RBox::new(parse_err)
    );
}

// Constructing a `RBoxError` from a `ParseFloatError`, then downcasting back to it.
{
    let parse_err = "".parse::<f32>().unwrap_err();
    let err = RBoxError::new(parse_err.clone());

    assert_eq!(
        err.downcast::<ParseFloatError>().unwrap(),
        RBox::new(parse_err)
    );
}

// Constructing a `RBoxError` from a `ParseFloatError`,
// then attempting to downcasting it to a `ParseIntError`.
{
    let parse_err = "".parse::<f32>().unwrap_err();
    let err = RBoxError::new(parse_err);

    assert!(err.downcast::<ParseIntError>().is_err());
}

§Downcasting by reference

use std::{convert::TryFrom, num::TryFromIntError, str::Utf8Error};

use abi_stable::std_types::{RBox, UnsyncRBoxError};

// Constructing a `UnsyncRBoxError` from a `Box<dyn Error>`,
// then downcasting to a `TryFromIntError`.
{
    let int_err = u32::try_from(-1_i32).unwrap_err();
    let dyn_err: Box<dyn std::error::Error + 'static> = Box::new(int_err.clone());
    let err = UnsyncRBoxError::from_box(dyn_err);

    assert_eq!(err.downcast_ref::<TryFromIntError>().unwrap(), &int_err);
}

// Constructing a `UnsyncRBoxError` from a `Utf8Error`, then downcasting back to it.
{
    let utf8_err = std::str::from_utf8(&[255]).unwrap_err();
    let err = UnsyncRBoxError::new(utf8_err.clone());

    assert_eq!(err.downcast_ref::<Utf8Error>().unwrap(), &utf8_err);
}

// Constructing a `UnsyncRBoxError` from a `Utf8Error`,
// then attempting to downcasting it to a `TryFromIntError`.
{
    let utf8_err = std::str::from_utf8(&[255]).unwrap_err();
    let err = UnsyncRBoxError::new(utf8_err);

    assert!(err.downcast_ref::<TryFromIntError>().is_none());
}

§Downcasting by mutable reference

use std::string::{FromUtf16Error, FromUtf8Error};

use abi_stable::std_types::{RBox, SendRBoxError};

// Constructing a `SendRBoxError` from a `Box<dyn Error>`,
// then downcasting to a `FromUtf8Error`.
{
    let str_err = || String::from_utf8(vec![255]).unwrap_err();
    let dyn_err: Box<dyn std::error::Error + Send + 'static> = Box::new(str_err());
    let mut err = SendRBoxError::from_box(dyn_err);

    assert!(err.downcast_ref::<FromUtf8Error>().is_some(), "part A");
}

// Constructing a `SendRBoxError` from a `FromUtf8Error`, then downcasting back to it.
{
    let str_err = || String::from_utf8(vec![255]).unwrap_err();
    let mut err = SendRBoxError::new(str_err());

    assert!(err.downcast_ref::<FromUtf8Error>().is_some(), "part B");
}

// Constructing a `SendRBoxError` from a `FromUtf16Error`,
// then attempting to downcasting it to a `FromUtf8Error`.
{
    let str_err = || String::from_utf16(&[0xD834]).unwrap_err();
    let mut err = SendRBoxError::new(str_err());

    assert!(err.downcast_ref::<FromUtf8Error>().is_none(), "part C");
}

Implementations§

source§

impl RBoxError_<SyncSend>

source

pub fn new<T>(value: T) -> Self
where T: ErrorTrait + Send + Sync + 'static,

Constructs a Send + Sync RBoxError_ from an error.

§Example
use abi_stable::std_types::RBoxError;

let str_err = String::from_utf8(vec![255]).unwrap_err();

let err = RBoxError::new(str_err);
source§

impl RBoxError_<UnsyncSend>

source

pub fn new<T>(value: T) -> Self
where T: ErrorTrait + Send + 'static,

Constructs a Send + !Sync RBoxError_ from an error.

§Example
use abi_stable::std_types::SendRBoxError;

let str_err = String::from_utf16(&[0xD834]).unwrap_err() ;

let err = SendRBoxError::new(str_err);
source§

impl RBoxError_<UnsyncUnsend>

source

pub fn new<T>(value: T) -> Self
where T: ErrorTrait + 'static,

Constructs a !Send + !Sync RBoxError_ from an error.

§Example
use abi_stable::std_types::UnsyncRBoxError;

let str_err = std::str::from_utf8(&[255]).unwrap_err() ;

let err = UnsyncRBoxError::new(str_err);
source§

impl<M> RBoxError_<M>

source

pub fn from_fmt<T>(value: &T) -> Self
where T: Display + Debug + ?Sized,

Constructs an RBoxError from an error, storing the Debug and Display messages without storing the error value.

§Example
use abi_stable::std_types::RBoxError;

let int_error = "".parse::<u32>().unwrap_err();

let display_fmt = int_error.to_string();
let debug_fmt = format!("{:#?}", int_error);

let err = RBoxError::from_fmt(&int_error);

assert_eq!(display_fmt, err.to_string());
assert_eq!(debug_fmt, format!("{:?}", err));
source

pub fn from_debug<T>(value: &T) -> Self
where T: Debug + ?Sized,

Constructs an RBoxError from a type that only implements Debug, storing the Debug message without storing the error value.

§Example
use abi_stable::std_types::RBoxError;

let int_error = "".parse::<u32>().unwrap_err();

let debug_fmt = format!("{:#?}", int_error);
let err = RBoxError::from_debug(&int_error);

assert_eq!(debug_fmt, format!("{}", err));
assert_eq!(debug_fmt, format!("{:#?}", err));
source§

impl<M> RBoxError_<M>

source

pub fn to_formatted_error<N>(&self) -> RBoxError_<N>

Converts this error to a formatted error

This is used to decouple an RBoxError from the dynamic library that produced it, in order to unload the dynamic library.

source§

impl<M> RBoxError_<M>

source

pub fn type_id(&self) -> UTypeId

Returns the UTypeId of the error this wraps.

source

pub fn heap_address(&self) -> usize

The address of the Box<_> this wraps

source

pub fn as_unsync(&self) -> &UnsyncRBoxError

Casts this &RBoxError_<_> to &UnsyncRBoxError.

§Example
use abi_stable::std_types::{RBoxError, UnsyncRBoxError};
use std::convert::TryFrom;

let int_err = u32::try_from(-1_i32).unwrap_err();

let err: RBoxError = RBoxError::new(int_err);

let unsync_err: &UnsyncRBoxError = err.as_unsync();
source

pub fn into_unsync(self) -> UnsyncRBoxError

Converts this RBoxError_<_> to UnsyncRBoxError.

§Example
use abi_stable::std_types::{RBoxError, UnsyncRBoxError};
use std::convert::TryFrom;

let int_err = u64::try_from(-1338_i32).unwrap_err();

let err: RBoxError = RBoxError::new(int_err);

let unsync_err: UnsyncRBoxError = err.into_unsync();
source§

impl RBoxError_<SyncSend>

source

pub fn as_send(&self) -> &SendRBoxError

Casts this &RBoxError_<_> to &SendRBoxError.

§Example
use abi_stable::std_types::{RBoxError, SendRBoxError};
use std::convert::TryFrom;

let slice: &mut [u32] = &mut [];
let arr_err=<&mut [u32;10]>::try_from(slice).unwrap_err();

let err: RBoxError = RBoxError::new(arr_err);

let unsync_err: &SendRBoxError = err.as_send();
source

pub fn into_send(self) -> SendRBoxError

Converts this RBoxError_<_> to SendRBoxError.

§Example
use abi_stable::std_types::{RBoxError, SendRBoxError};
use std::convert::TryFrom;

let slice: &[u32] = &[];
let arr_err=<&[u32;10]>::try_from(slice).unwrap_err();

let err: RBoxError = RBoxError::new(arr_err);

let unsync_err: SendRBoxError = err.into_send();
source§

impl RBoxError_<SyncSend>

source

pub fn from_box(this: Box<dyn ErrorTrait + Send + Sync + 'static>) -> Self

Converts a Box<dyn Error + Send + Sync> to a Send + Sync RBoxError_.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn into_box(self) -> Box<dyn ErrorTrait + Send + Sync + 'static>

Converts an RBoxError_<_> to a Box<dyn Error>.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the RBoxError_<_> is an erased Box<dyn Error + ... > it will be returned directly, otherwise the RBoxError_<_> will be converted into an Box<dyn Error + ... > using Box::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn downcast<T>(self) -> Result<RBox<T>, Self>
where T: ErrorTrait + 'static,

Converts this RBoxError_<_> to an RBox<T>.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to Box<dyn Error + ... >, then it’ll downcast the Box<dyn Error + ... > into RBox<T>.

§Errors

This returns Err(self) in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example.

source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: ErrorTrait + 'static,

Converts this &RBoxError_<_> to a &T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &dyn Error + ... , then it’ll downcast the &dyn Error + ... into &T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

source

pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: ErrorTrait + 'static,

Converts this &mut RBoxError_<_> to a &mut T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &mut dyn Error + ... , then it’ll downcast the &mut dyn Error + ... into &mut T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

source§

impl RBoxError_<UnsyncSend>

source

pub fn from_box(this: Box<dyn ErrorTrait + Send + 'static>) -> Self

Converts a Box<dyn Error + Send> to a Send + !Sync RBoxError_.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn into_box(self) -> Box<dyn ErrorTrait + Send + 'static>

Converts an RBoxError_<_> to a Box<dyn Error>.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the RBoxError_<_> is an erased Box<dyn Error + ... > it will be returned directly, otherwise the RBoxError_<_> will be converted into an Box<dyn Error + ... > using Box::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn downcast<T>(self) -> Result<RBox<T>, Self>
where T: ErrorTrait + 'static,

Converts this RBoxError_<_> to an RBox<T>.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to Box<dyn Error + ... >, then it’ll downcast the Box<dyn Error + ... > into RBox<T>.

§Errors

This returns Err(self) in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example.

source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: ErrorTrait + 'static,

Converts this &RBoxError_<_> to a &T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &dyn Error + ... , then it’ll downcast the &dyn Error + ... into &T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

source

pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: ErrorTrait + 'static,

Converts this &mut RBoxError_<_> to a &mut T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &mut dyn Error + ... , then it’ll downcast the &mut dyn Error + ... into &mut T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

source§

impl RBoxError_<UnsyncUnsend>

source

pub fn from_box(this: Box<dyn ErrorTrait + 'static>) -> Self

Converts a Box<dyn Error> to a !Send + !Sync RBoxError_.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn into_box(self) -> Box<dyn ErrorTrait + 'static>

Converts an RBoxError_<_> to a Box<dyn Error>.

RBoxError::from_box( RBoxError::into_box( err ) ) is a no-op with respect to the heap address of the RBoxError_<_>.

§Behavior

If the contents of the RBoxError_<_> is an erased Box<dyn Error + ... > it will be returned directly, otherwise the RBoxError_<_> will be converted into an Box<dyn Error + ... > using Box::new.

§Example

For an example of converting back and forth to a Box<dyn Error> here is the example.

source

pub fn downcast<T>(self) -> Result<RBox<T>, Self>
where T: ErrorTrait + 'static,

Converts this RBoxError_<_> to an RBox<T>.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to Box<dyn Error + ... >, then it’ll downcast the Box<dyn Error + ... > into RBox<T>.

§Errors

This returns Err(self) in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example.

source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: ErrorTrait + 'static,

Converts this &RBoxError_<_> to a &T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &dyn Error + ... , then it’ll downcast the &dyn Error + ... into &T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

source

pub fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: ErrorTrait + 'static,

Converts this &mut RBoxError_<_> to a &mut T.

If was constructed from a Box<dyn Error + ... >, and this is being casted to another type, it’ll first downcast to &mut dyn Error + ... , then it’ll downcast the &mut dyn Error + ... into &mut T.

§Errors

This returns None in any of these cases:

  • The RBoxError_ wasn’t constructed in the current dynamic library.

  • The RBoxError_ was constructed with a different type than T.

§Example

Look at the type level documentation for the example. the example.

Trait Implementations§

source§

impl<M> Debug for RBoxError_<M>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M> Display for RBoxError_<M>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M> Error for RBoxError_<M>

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
source§

impl From<Box<dyn Error>> for RBoxError_<UnsyncUnsend>

source§

fn from(this: Box<dyn ErrorTrait + 'static>) -> RBoxError_<UnsyncUnsend>

Converts a Box<dyn Error> to a !Send + !Sync RBoxError_.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

source§

impl From<Box<dyn Error + Send>> for RBoxError_<UnsyncSend>

source§

fn from(this: Box<dyn ErrorTrait + Send + 'static>) -> RBoxError_<UnsyncSend>

Converts a Box<dyn Error + Send> to a Send + !Sync RBoxError_.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

source§

impl From<Box<dyn Error + Sync + Send>> for RBoxError_<SyncSend>

source§

fn from( this: Box<dyn ErrorTrait + Send + Sync + 'static>, ) -> RBoxError_<SyncSend>

Converts a Box<dyn Error + Send + Sync> to a Send + Sync RBoxError_.

§Behavior

If the contents of the Box<_> is an erased RBoxError_<_> it will be returned directly, otherwise the Box<_> will be converted into an RBoxError_<_> using RBoxError_::new.

source§

impl<M> GetStaticEquivalent_ for RBoxError_<M>
where M: __StableAbi,

source§

type StaticEquivalent = _static_RBoxError_<<M as GetStaticEquivalent_>::StaticEquivalent>

The 'static equivalent of Self
source§

impl<M> StableAbi for RBoxError_<M>
where M: __StableAbi,

source§

type IsNonZeroType = False

Whether this type has a single invalid bit-pattern. Read more
source§

const LAYOUT: &'static TypeLayout = _

The layout of the type provided by implementors.
source§

const ABI_CONSTS: AbiConsts = _

const-equivalents of the associated types.

Auto Trait Implementations§

§

impl<M> Freeze for RBoxError_<M>

§

impl<M> RefUnwindSafe for RBoxError_<M>
where M: RefUnwindSafe,

§

impl<M> Send for RBoxError_<M>
where M: Send,

§

impl<M> Sync for RBoxError_<M>
where M: Sync,

§

impl<M> Unpin for RBoxError_<M>
where M: Unpin,

§

impl<M> UnwindSafe for RBoxError_<M>
where M: UnwindSafe,

Blanket Implementations§

source§

impl<T> AlignerFor<1> for T

source§

type Aligner = AlignTo1<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<1024> for T

source§

type Aligner = AlignTo1024<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<128> for T

source§

type Aligner = AlignTo128<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<16> for T

source§

type Aligner = AlignTo16<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<16384> for T

source§

type Aligner = AlignTo16384<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<2> for T

source§

type Aligner = AlignTo2<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<2048> for T

source§

type Aligner = AlignTo2048<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<256> for T

source§

type Aligner = AlignTo256<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<32> for T

source§

type Aligner = AlignTo32<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<32768> for T

source§

type Aligner = AlignTo32768<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<4> for T

source§

type Aligner = AlignTo4<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<4096> for T

source§

type Aligner = AlignTo4096<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<512> for T

source§

type Aligner = AlignTo512<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<64> for T

source§

type Aligner = AlignTo64<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<8> for T

source§

type Aligner = AlignTo8<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<8192> for T

source§

type Aligner = AlignTo8192<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<S> ROExtAcc for S

source§

fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F

Gets a reference to a field, determined by offset. Read more
source§

fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F

Gets a muatble reference to a field, determined by offset. Read more
source§

fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F

Gets a const pointer to a field, the field is determined by offset. Read more
source§

fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F

Gets a mutable pointer to a field, determined by offset. Read more
source§

impl<S> ROExtOps<Aligned> for S

source§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
source§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Aligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
source§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
source§

impl<S> ROExtOps<Unaligned> for S

source§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
source§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
source§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
source§

impl<T> SelfOps for T
where T: ?Sized,

source§

fn eq_id(&self, other: &Self) -> bool

Compares the address of self with the address of other. Read more
source§

fn piped<F, U>(self, f: F) -> U
where F: FnOnce(Self) -> U, Self: Sized,

Emulates the pipeline operator, allowing method syntax in more places. Read more
source§

fn piped_ref<'a, F, U>(&'a self, f: F) -> U
where F: FnOnce(&'a Self) -> U,

The same as piped except that the function takes &Self Useful for functions that take &Self instead of Self. Read more
source§

fn piped_mut<'a, F, U>(&'a mut self, f: F) -> U
where F: FnOnce(&'a mut Self) -> U,

The same as piped, except that the function takes &mut Self. Useful for functions that take &mut Self instead of Self.
source§

fn mutated<F>(self, f: F) -> Self
where F: FnOnce(&mut Self), Self: Sized,

Mutates self using a closure taking self by mutable reference, passing it along the method chain. Read more
source§

fn observe<F>(self, f: F) -> Self
where F: FnOnce(&Self), Self: Sized,

Observes the value of self, passing it along unmodified. Useful in long method chains. Read more
source§

fn into_<T>(self) -> T
where Self: Into<T>,

Performs a conversion with Into. using the turbofish .into_::<_>() syntax. Read more
source§

fn as_ref_<T>(&self) -> &T
where Self: AsRef<T>, T: ?Sized,

Performs a reference to reference conversion with AsRef, using the turbofish .as_ref_::<_>() syntax. Read more
source§

fn as_mut_<T>(&mut self) -> &mut T
where Self: AsMut<T>, T: ?Sized,

Performs a mutable reference to mutable reference conversion with AsMut, using the turbofish .as_mut_::<_>() syntax. Read more
source§

fn drop_(self)
where Self: Sized,

Drops self using method notation. Alternative to std::mem::drop. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<This> TransmuteElement for This
where This: ?Sized,

source§

unsafe fn transmute_element<T>( self, ) -> <Self as CanTransmuteElement<T>>::TransmutedPtr
where Self: CanTransmuteElement<T>,

Transmutes the element type of this pointer.. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> TypeIdentity for T
where T: ?Sized,

source§

type Type = T

This is always Self.
source§

fn into_type(self) -> Self::Type
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
source§

fn as_type(&self) -> &Self::Type

Converts a reference back to the original type.
source§

fn as_type_mut(&mut self) -> &mut Self::Type

Converts a mutable reference back to the original type.
source§

fn into_type_box(self: Box<Self>) -> Box<Self::Type>

Converts a box back to the original type.
source§

fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>

Converts an Arc back to the original type. Read more
source§

fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>

Converts an Rc back to the original type. Read more
source§

fn from_type(this: Self::Type) -> Self
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
source§

fn from_type_ref(this: &Self::Type) -> &Self

Converts a reference back to the original type.
source§

fn from_type_mut(this: &mut Self::Type) -> &mut Self

Converts a mutable reference back to the original type.
source§

fn from_type_box(this: Box<Self::Type>) -> Box<Self>

Converts a box back to the original type.
source§

fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>

Converts an Arc back to the original type.
source§

fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>

Converts an Rc back to the original type.