Struct VariantProxy

Source
pub struct VariantProxy<T: ?Sized, V> { /* private fields */ }
Expand description

Enum wrapper,for accessing the fields of a particular variant (determined by the V type parameter).

The V type parameter is a TStr.

Example type: VariantProxy<Enum,TS!(Foo)>,Foo being the name of the variant.

§Construction

These are 3 ways to construct a VariantProxy:

  • Safe: Calling StructuralExt methods with fp!(::VariantName) as an argument, which returns an Option<VariantProxy<Self,TS!(VariantName)>> (reference methods return a reference to a VariantProxy).

  • Safe: Calling an EnumExt method with fp!(VariantName) as an argument

  • Unsafe: Calling a VariantProxy constructor function.

§Generic parameters

T is the enum this wraps.

V is the name of the wrapped variant (example type:TS!(Bar)).

§Example

This example constructs a VariantProxy safely.

use structural::{fp,ts,StructuralExt,Structural,TS};
use structural::enums::{EnumExt,VariantProxy};

with_bar(Foo::Bar(0,"hello"));

with_bar(Foo2::Bar(0,"hello",true));

/// Runs some assertions.
///
/// # Panics
///
/// This function panics if you pass an enum whose current variant is **not** `Bar`.
fn with_bar<T>(this: T)
where
    // `Foo_ESI` was generated by the `Structural` derive,
    // it aliases the accessor traits for `Foo`,
    // and also requires an enum with the same amount of variants as `Foo`
    //
    // `Debug` is required to print the enum in the `.expect(...)` error.
    T: Foo_ESI + Copy + std::fmt::Debug
{
    let mut proxy: VariantProxy<T, TS!(Bar)>=
        this.into_variant(ts!(Bar))
            .expect("Expected the `Bar` variant to be passed in");
    
    assert_eq!( proxy.field_(fp!(0)), &0);
    assert_eq!( proxy.field_(fp!(1)), &"hello");
    
    assert_eq!( proxy.field_mut(fp!(0)), &mut 0);
    assert_eq!( proxy.field_mut(fp!(1)), &mut "hello");
    
    assert_eq!( proxy.into_field(fp!(0)), 0);
    assert_eq!( proxy.into_field(fp!(1)), "hello");
}

#[derive(Debug,PartialEq,Structural,Copy,Clone)]
enum Foo{
    Bar(u32,&'static str),
    Baz(u32),
}

#[derive(Debug,PartialEq,Structural,Copy,Clone)]
enum Foo2{
    Bar(u32,&'static str,bool),
    Baz(u32,u64),
}

§Example

This example uses an unsafe constructor.

use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;


unsafe{
    with_bar(Foo::Bar(0,"hello"));

    with_bar(Foo2::Bar(0,"hello",true));
}

/// Runs some assertions.
///
/// # Safety
///
/// You must pass an enum whose current variant is `Bar`,
/// `this.is_variant(ts!(Bar))` (the method is from `StructuralExt`) must return true.
unsafe fn with_bar<T>(this: T)
where
    // `Foo_ESI` was generated by the `Structural` derive,
    // it aliases the accessor traits for `Foo`,
    // and also requires an enum with the same amount of variants as `Foo`
    T: Foo_ESI + Copy
{
    let mut proxy: VariantProxy<T, TS!(Bar)>=
        VariantProxy::new(this, ts!(Bar));
    
    assert_eq!( proxy.field_(fp!(0)), &0);
    assert_eq!( proxy.field_(fp!(1)), &"hello");
    
    assert_eq!( proxy.field_mut(fp!(0)), &mut 0);
    assert_eq!( proxy.field_mut(fp!(1)), &mut "hello");
    
    assert_eq!( proxy.into_field(fp!(0)), 0);
    assert_eq!( proxy.into_field(fp!(1)), "hello");
}

#[derive(Debug,PartialEq,Structural,Copy,Clone)]
enum Foo{
    Bar(u32,&'static str),
    Baz(u32),
}

#[derive(Debug,PartialEq,Structural,Copy,Clone)]
enum Foo2{
    Bar(u32,&'static str,bool),
    Baz(u32,u64),
}

§Example

This example demonstrates how you can use a VariantProxy to treat a newtype variant as the struct that it wraps.

use structural::{StructuralExt, Structural, TS, fp};
use structural::enums::VariantProxy;

// `Point_SI` was generated by the `Structural` derive macro on `Point`,
// aliasing the accessor traits that `Point` implements.
fn with_bar(this: &impl Point_SI){
    assert_eq!( this.fields(fp!(x,y)), (&21, &34) );
}

let point=Point{x:21, y:34};
with_bar(&point);

let variant=Foo::Point(point);
// The type annotation here isn't necessary.
let proxy: &VariantProxy<Foo, TS!(Point)>=
    variant.field_(fp!(::Point)).expect("it was just constructed as a Foo::Point");
with_bar(proxy);


#[derive(Structural)]
// The `#[struc(no_trait)]` attribute disables the generation of
// the `*_SI` and `*_ESI` traits for this type.
#[struc(no_trait)]
pub enum Foo{
    // You would write this as `#[struc(newtype(bounds = "Point_VSI<@variant>"))]`
    // if you didn't use the  `#[struc(no_trait)]` attribute.
    #[struc(newtype)]
    Point(Point),
}

#[derive(Structural)]
pub struct Point{
    pub x:u32,
    pub y:u32,
}

Implementations§

Source§

impl<T: ?Sized, V> VariantProxy<T, TStr<V>>

Source

pub const unsafe fn new(value: T, name: TStr<V>) -> Self
where T: Sized,

Constructs this VariantProxy from an enum.

§Safety

V must be the name of the wrapped enum variant.

§Example
use structural::{fp,ts,TS,field_path_aliases,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(u64),
}

let proxy: VariantProxy<Foo, TS!(Bar)>= unsafe{
    VariantProxy::new(Foo::Bar(0), ts!(Bar))
};

assert_eq!( proxy.into_field(fp!(0)), 0 );
Source

pub unsafe fn from_ref(reference: &T, _: TStr<V>) -> &Self

Constructs this VariantProxy from a reference to an enum.

§Safety

V must be the name of the wrapped enum variant.

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32,bool),
    Baz(u32),
}

let proxy: &VariantProxy<Foo, TS!(Bar)>= unsafe{
    VariantProxy::from_ref(&Foo::Bar(99,false), ts!(Bar))
};

assert_eq!( proxy.field_(fp!(0)), &99 );
assert_eq!( proxy.field_(fp!(1)), &false );
Source

pub unsafe fn from_mut(reference: &mut T, vari: TStr<V>) -> &mut Self

Constructs this VariantProxy from a mutable reference to the enum.

§Safety

V must be the name of the wrapped enum variant.

§Safety

V must be the name of the wrapped enum variant.

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(Option<usize>,Vec<String>),
}

let mut this=Foo::Baz(Some(1),vec![]);

let proxy: &mut VariantProxy<Foo, TS!(Baz)>= unsafe{
    VariantProxy::from_mut(&mut this, ts!(Baz))
};

assert_eq!( proxy.field_mut(fp!(0)), &mut Some(1) );
assert_eq!( proxy.field_mut(fp!(1)), &mut Vec::<String>::new() );
Source

pub const unsafe fn from_raw_mut(ptr: *mut T, name: TStr<V>) -> *mut Self

Constructs this VariantProxy from a raw pointer to the enum.

§Safety

V must be the name of the wrapped enum variant.

§Safety

V must be the name of the wrapped enum variant.

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

use std::cmp::Ordering;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(Ordering,&'static [u8]),
}

let mut this=Foo::Baz( Ordering::Less, &[0,1,2,3] );

let proxy: *mut VariantProxy<Foo, TS!(Baz)>= unsafe{
    VariantProxy::from_raw_mut(&mut this as *mut Foo, ts!(Baz))
};

unsafe{
    assert_eq!( (*proxy).field_mut(fp!(0)), &mut Ordering::Less );
    assert_eq!( (*proxy).field_mut(fp!(1)), &mut &[0,1,2,3] );
}
Source

pub fn get(&self) -> &T

Gets a reference to the wrapped enum.

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(u32),
}

let proxy: VariantProxy<Foo, TS!(Bar)>= unsafe{
    VariantProxy::new(Foo::Bar(0), ts!(Bar))
};

assert_eq!(proxy.get() , &Foo::Bar(0));
Source

pub unsafe fn get_mut(&mut self) -> &mut T

Gets a mutable reference to the wrapped enum.

§Safety

You must not change the variant of the wrapped enum, since VariantProxy relies on it being the one that the V generic parmeter specifies

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(u32),
}

let mut this=Foo::Baz(0);

let proxy: &mut VariantProxy<Foo, TS!(Baz)>= unsafe{
    VariantProxy::from_mut(&mut this, ts!(Baz))
};

assert_eq!(unsafe{ proxy.get_mut() }, &mut Foo::Baz(0));
Source

pub fn into_inner(self) -> T
where T: Sized,

Unwraps this VariantProxy into the enum it wraps.

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(u32),
}

let proxy: VariantProxy<Foo, TS!(Bar)>= unsafe{
    VariantProxy::new(Foo::Bar(0), ts!(Bar))
};

assert_eq!(proxy.into_inner() , Foo::Bar(0));
Source

pub unsafe fn as_raw_mut(this: *mut Self) -> *mut T

Gets a mutable raw pointer to the wrapped enum.

§Safety

You must not change the variant of the wrapped enum, because VariantProxy relies on it being the one that the V generic parmaetere specifies

§Example
use structural::{fp,ts,TS,StructuralExt,Structural};
use structural::enums::VariantProxy;

#[derive(Debug,PartialEq,Structural)]
#[struc(no_trait)]
enum Foo{
    Bar(u32),
    Baz(u32),
}

let mut this=Foo::Baz(0);

let proxy: *mut VariantProxy<Foo, TS!(Baz)>= unsafe{
    VariantProxy::from_raw_mut(&mut this as *mut Foo, ts!(Baz))
};

assert_eq!(unsafe{  &mut *VariantProxy::as_raw_mut(proxy) }, &mut Foo::Baz(0));

Trait Implementations§

Source§

impl<T: Clone + ?Sized, V: Clone> Clone for VariantProxy<T, V>

Source§

fn clone(&self) -> VariantProxy<T, V>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, V> Debug for VariantProxy<T, V>
where T: ?Sized + Debug, V: IsTStr,

Source§

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

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

impl<T: ?Sized, V> Deref for VariantProxy<T, V>
where V: IsTStr,

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &T

Dereferences the value.
Source§

impl<T, V> DropFields for VariantProxy<T, V>
where T: IsVariant<V> + DropFields, V: IsTStr,

Source§

fn pre_move(&mut self)

What this type does right before any field is moved.
Source§

unsafe fn drop_fields(&mut self, moved: MovedOutFields)

Drops all the fields that were not moved out. Read more
Source§

impl<T, V, F> FieldType<F> for VariantProxy<T, V>
where T: ?Sized + FieldType<VariantField<V, F>>, V: IsTStr,

Source§

type Ty = <T as FieldType<VariantField<V, F>>>::Ty

The type of the FieldPath field.
Source§

impl<T, V, F> GetField<F> for VariantProxy<T, V>
where T: ?Sized + GetVariantField<V, F>, V: IsTStr,

Source§

fn get_field_(&self, fname: F) -> &T::Ty

Accesses the FieldName field by reference.
Source§

impl<T, V, F> GetFieldMut<F> for VariantProxy<T, V>
where T: ?Sized + GetVariantFieldMut<V, F>, V: IsTStr,

Source§

fn get_field_mut_(&mut self, fname: F) -> &mut T::Ty

Accesses the FieldName field by mutable reference.
Source§

unsafe fn get_field_raw_mut(this: *mut (), fname: F) -> *mut T::Ty
where Self: Sized,

Gets a mutable pointer for the field. Read more
Source§

fn get_field_raw_mut_fn(&self) -> GetFieldRawMutFn<F, T::Ty>

Gets the get_field_raw_mut associated function as a function pointer.
Source§

impl<T, V, F> IntoField<F> for VariantProxy<T, V>
where T: IntoVariantField<V, F>, V: IsTStr,

Source§

fn into_field_(self, fname: F) -> T::Ty
where Self: Sized,

Converts this into the field by value.
Source§

unsafe fn move_out_field_( &mut self, fname: F, moved: &mut MovedOutFields, ) -> T::Ty
where Self: Sized,

Moves out the field from self. Read more
Source§

impl<T: Ord + ?Sized, V: Ord> Ord for VariantProxy<T, V>

Source§

fn cmp(&self, other: &VariantProxy<T, V>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T: PartialEq + ?Sized, V: PartialEq> PartialEq for VariantProxy<T, V>

Source§

fn eq(&self, other: &VariantProxy<T, V>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PartialOrd + ?Sized, V: PartialOrd> PartialOrd for VariantProxy<T, V>

Source§

fn partial_cmp(&self, other: &VariantProxy<T, V>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T: Copy + ?Sized, V: Copy> Copy for VariantProxy<T, V>

Source§

impl<T: Eq + ?Sized, V: Eq> Eq for VariantProxy<T, V>

Source§

impl<T: ?Sized, V> StructuralPartialEq for VariantProxy<T, V>

Auto Trait Implementations§

§

impl<T, V> Freeze for VariantProxy<T, V>
where T: Freeze + ?Sized,

§

impl<T, V> RefUnwindSafe for VariantProxy<T, V>

§

impl<T, V> Send for VariantProxy<T, V>
where T: Send + ?Sized, V: Send,

§

impl<T, V> Sync for VariantProxy<T, V>
where T: Sync + ?Sized, V: Sync,

§

impl<T, V> Unpin for VariantProxy<T, V>
where T: Unpin + ?Sized, V: Unpin,

§

impl<T, V> UnwindSafe for VariantProxy<T, V>
where T: UnwindSafe + ?Sized, V: UnwindSafe,

Blanket Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

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

Source§

fn as_variant<V>( &self, vari: TStr<V>, ) -> Result<&VariantProxy<Self, TStr<V>>, &Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a reference to an enum into a reference of a VariantProxy of some variant. Read more
Source§

fn as_mut_variant<V>( &mut self, vari: TStr<V>, ) -> Result<&mut VariantProxy<Self, TStr<V>>, &mut Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a mutable reference to an enum into a mutable reference of a VariantProxy of some variant. Read more
Source§

unsafe fn as_raw_mut_variant<V>( this: *mut Self, vari: TStr<V>, ) -> Result<*mut VariantProxy<Self, TStr<V>>, *mut Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a raw pointer to an enum into a raw pointer of a VariantProxy of some variant. Read more
Source§

fn into_variant<V>( self, vari: TStr<V>, ) -> Result<VariantProxy<Self, TStr<V>>, Self>
where Self: IsVariant<TStr<V>> + Sized,

Fallibly converts an enum into a VariantProxy of some variant. 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<This, T> IntoStructural<T> for This
where T: FromStructural<This>,

Source§

fn into_structural(self) -> T

Performs the conversion
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

const T: PhantomData<fn() -> Self> = PhantomData

Represents Self by using a VariantPhantom, using the syntax Type::T to pass it in methods with _:VariantPhantom<T> parameters. Read more
Source§

const T_D: PhantomData<Self> = PhantomData

Represents Self by using a VariantDropPhantom,for specialized cases. Read more
Source§

fn assert_ty(self, _other: PhantomData<fn() -> Self>) -> Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn assert_ty_ref(&self, _other: PhantomData<fn() -> Self>) -> &Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn assert_ty_mut(&mut self, _other: PhantomData<fn() -> Self>) -> &mut Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn ty_(&self) -> PhantomData<fn() -> Self>

Equivalent to SelfOps::T,as a method. Read more
Source§

fn ty_d(&self) -> PhantomData<Self>

Equivalent to Self::ty_,for specialized cases. Read more
Source§

fn ty_inv(&self) -> PhantomData<fn(Self) -> Self>

Equivalent to Self::ty_ with an invariant type.
Source§

fn ty_inv_ref(&self) -> PhantomData<Cell<&Self>>

Equivalent to Self::ty_ with an invariant lifetime.
Source§

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

Identity comparison to another value of the same type. 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 a long method chain. Read more
Source§

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

Performs a conversion using Into. Read more
Source§

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

Performs a reference to reference conversion using 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 using 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> StructuralExt for T
where T: ?Sized,

Source§

fn field_<'a, P>( &'a self, path: P, ) -> NormalizeFieldsOut<Result<&'a P::Ty, P::Err>>
where P: RevGetFieldImpl<'a, Self>, Result<&'a P::Ty, P::Err>: NormalizeFields,

Gets a reference to a field,determined by path. Read more
Source§

fn fields<'a, P>(&'a self, path: P) -> RevGetMultiFieldOut<'a, P, Self>
where P: RevGetMultiField<'a, Self>,

Gets references to multiple fields,determined by path. Read more
Source§

fn cloned_fields<'a, P>( &'a self, path: P, ) -> ClonedOut<RevGetMultiFieldOut<'a, P, Self>>
where P: RevGetMultiField<'a, Self>, RevGetMultiFieldOut<'a, P, Self>: Cloned,

Gets clones of multiple fields,determined by path. Read more
Source§

fn field_mut<'a, P>( &'a mut self, path: P, ) -> NormalizeFieldsOut<Result<&'a mut P::Ty, P::Err>>
where P: RevGetFieldMutImpl<'a, Self>, Result<&'a mut P::Ty, P::Err>: NormalizeFields,

Gets a mutable reference to a field,determined by path. Read more
Source§

fn fields_mut<'a, P>( &'a mut self, path: P, ) -> RevGetMultiFieldMutOut<'a, P, Self>
where P: RevGetMultiFieldMut<'a, Self>,

Gets mutable references to multiple fields,determined by path. Read more
Source§

fn into_field<P>(self, path: P) -> NormalizeFieldsOut<Result<P::Ty, P::Err>>
where P: RevIntoFieldImpl<Self>, P::Ty: Sized, Result<P::Ty, P::Err>: NormalizeFields, Self: Sized,

Converts ´self´ into a field,determined by path. Read more
Source§

fn into_fields<P>(self, path: P) -> RevIntoMultiFieldOut<P, Self>
where P: RevIntoMultiField<Self>, Self: Sized,

Converts self into multiple fields by value. Read more
Source§

fn is_variant<P>(&self, _path: P) -> bool
where P: IsTStr, Self: IsVariant<P>,

Checks whether an enum is a particular variant. Read more
Source§

fn into_struc<U>(self) -> U
where Self: IntoStructural<U>,

Converts this into another structural type using IntoStructural. Read more
Source§

fn try_into_struc<U>(self) -> Result<U, TryFromError<Self, Self::Error>>
where Self: TryIntoStructural<U>,

Performs a fallible conversion into another structural type using TryIntoStructural. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The error type returned when the conversion fails.
Source§

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

Performs the conversion
Source§

impl<This, T> TryIntoStructural<T> for This
where T: TryFromStructural<This>,

Source§

type Error = <T as TryFromStructural<This>>::Error

The error parameter of TryFromError, returned from try_into_structural on conversion error.
Source§

fn try_into_structural( self, ) -> Result<T, TryFromError<This, <This as TryIntoStructural<T>>::Error>>

Performs the conversion
Source§

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

Source§

type Type = T

The same type as Self. Read more
Source§

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

Converts a value back to the original type.
Source§

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

Converts a reference back to the original type.
Source§

fn into_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.
Source§

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

Converts an Rc back to the original type.
Source§

fn from_type_val(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.
Source§

impl<This, T> Array0<T> for This
where This: ?Sized,

Source§

impl<This, V, T> Array0Variant<T, V> for This
where This: ?Sized,

Source§

impl<This, T> Array1<T> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = T> + ?Sized,

Source§

impl<This, T> Array10<T> for This
where This: Array_0_8<T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__9,)>>> + ?Sized,

Source§

impl<This, T> Array11<T> for This
where This: IntoFieldMut<TStr<__TS<(__8,)>>, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__9,)>>> + IntoFieldMut<TStr<__TS<(__1, __0)>>> + Array_0_8<T> + ?Sized,

Source§

impl<This, T> Array12<T> for This
where This: IntoFieldMut<TStr<__TS<(__9,)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __0)>>> + Array_0_8<T> + IntoFieldMut<TStr<__TS<(__1, __1)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + ?Sized,

Source§

impl<This, T> Array13<T> for This
where This: IntoFieldMut<TStr<__TS<(__9,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __0)>>> + Array_0_8<T> + IntoFieldMut<TStr<__TS<(__1, __1)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__1, __2)>>> + ?Sized,

Source§

impl<This, T> Array14<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __0)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_0_8<T> + IntoFieldMut<TStr<__TS<(__1, __1)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__1, __2)>>> + IntoFieldMut<TStr<__TS<(__1, __3)>>> + IntoFieldMut<TStr<__TS<(__9,)>>> + ?Sized,

Source§

impl<This, T> Array15<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __0)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_0_8<T> + IntoFieldMut<TStr<__TS<(__1, __1)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__1, __2)>>> + IntoFieldMut<TStr<__TS<(__1, __3)>>> + IntoFieldMut<TStr<__TS<(__9,)>>> + IntoFieldMut<TStr<__TS<(__1, __4)>>> + ?Sized,

Source§

impl<This, T> Array16<T> for This
where This: Array_8_16<T> + ?Sized,

Source§

impl<This, T> Array17<T> for This
where This: Array_8_16<T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + ?Sized,

Source§

impl<This, T> Array18<T> for This
where This: Array_8_16<T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + IntoFieldMut<TStr<__TS<(__1, __7)>>> + ?Sized,

Source§

impl<This, T> Array19<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __6)>>, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __7)>>> + IntoFieldMut<TStr<__TS<(__1, __8)>>> + Array_8_16<T> + ?Sized,

Source§

impl<This, T> Array2<T> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1,)>>> + ?Sized,

Source§

impl<This, T> Array20<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __7)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __8)>>> + Array_8_16<T> + IntoFieldMut<TStr<__TS<(__1, __9)>>> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + ?Sized,

Source§

impl<This, T> Array21<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __7)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__1, __8)>>> + Array_8_16<T> + IntoFieldMut<TStr<__TS<(__1, __9)>>> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + IntoFieldMut<TStr<__TS<(__2, __0)>>> + ?Sized,

Source§

impl<This, T> Array22<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __8)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_8_16<T> + IntoFieldMut<TStr<__TS<(__1, __9)>>> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + IntoFieldMut<TStr<__TS<(__2, __0)>>> + IntoFieldMut<TStr<__TS<(__2, __1)>>> + IntoFieldMut<TStr<__TS<(__1, __7)>>> + ?Sized,

Source§

impl<This, T> Array23<T> for This
where This: IntoFieldMut<TStr<__TS<(__1, __8)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_8_16<T> + IntoFieldMut<TStr<__TS<(__1, __9)>>> + IntoFieldMut<TStr<__TS<(__1, __6)>>> + IntoFieldMut<TStr<__TS<(__2, __0)>>> + IntoFieldMut<TStr<__TS<(__2, __1)>>> + IntoFieldMut<TStr<__TS<(__1, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __2)>>> + ?Sized,

Source§

impl<This, T> Array24<T> for This
where This: Array_16_24<T> + ?Sized,

Source§

impl<This, T> Array25<T> for This
where This: Array_16_24<T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + ?Sized,

Source§

impl<This, T> Array26<T> for This
where This: Array_16_24<T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + IntoFieldMut<TStr<__TS<(__2, __5)>>> + ?Sized,

Source§

impl<This, T> Array27<T> for This
where This: IntoFieldMut<TStr<__TS<(__2, __4)>>, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __5)>>> + IntoFieldMut<TStr<__TS<(__2, __6)>>> + Array_16_24<T> + ?Sized,

Source§

impl<This, T> Array28<T> for This
where This: IntoFieldMut<TStr<__TS<(__2, __5)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __6)>>> + Array_16_24<T> + IntoFieldMut<TStr<__TS<(__2, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + ?Sized,

Source§

impl<This, T> Array29<T> for This
where This: IntoFieldMut<TStr<__TS<(__2, __5)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __6)>>> + Array_16_24<T> + IntoFieldMut<TStr<__TS<(__2, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + IntoFieldMut<TStr<__TS<(__2, __8)>>> + ?Sized,

Source§

impl<This, T> Array3<T> for This
where This: IntoFieldMut<TStr<__TS<(__1,)>>, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__0,)>>> + ?Sized,

Source§

impl<This, T> Array30<T> for This
where This: IntoFieldMut<TStr<__TS<(__2, __6)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_16_24<T> + IntoFieldMut<TStr<__TS<(__2, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + IntoFieldMut<TStr<__TS<(__2, __8)>>> + IntoFieldMut<TStr<__TS<(__2, __9)>>> + IntoFieldMut<TStr<__TS<(__2, __5)>>> + ?Sized,

Source§

impl<This, T> Array31<T> for This
where This: IntoFieldMut<TStr<__TS<(__2, __6)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + Array_16_24<T> + IntoFieldMut<TStr<__TS<(__2, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + IntoFieldMut<TStr<__TS<(__2, __8)>>> + IntoFieldMut<TStr<__TS<(__2, __9)>>> + IntoFieldMut<TStr<__TS<(__2, __5)>>> + IntoFieldMut<TStr<__TS<(__3, __0)>>> + ?Sized,

Source§

impl<This, T> Array32<T> for This
where This: Array_16_24<T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2, __7)>>> + IntoFieldMut<TStr<__TS<(__2, __4)>>> + IntoFieldMut<TStr<__TS<(__2, __8)>>> + IntoFieldMut<TStr<__TS<(__2, __9)>>> + IntoFieldMut<TStr<__TS<(__2, __5)>>> + IntoFieldMut<TStr<__TS<(__3, __0)>>> + IntoFieldMut<TStr<__TS<(__3, __1)>>> + IntoFieldMut<TStr<__TS<(__2, __6)>>> + ?Sized,

Source§

impl<This, T> Array4<T> for This
where This: IntoFieldMut<TStr<__TS<(__1,)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__0,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + ?Sized,

Source§

impl<This, T> Array5<T> for This
where This: IntoFieldMut<TStr<__TS<(__2,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__0,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__1,)>>> + ?Sized,

Source§

impl<This, T> Array6<T> for This
where This: IntoFieldMut<TStr<__TS<(__2,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__0,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + ?Sized,

Source§

impl<This, T> Array7<T> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + ?Sized,

Source§

impl<This, T> Array8<T> for This
where This: Array_0_8<T> + ?Sized,

Source§

impl<This, T> Array9<T> for This
where This: Array_0_8<T, Ty = T> + IntoFieldMut<TStr<__TS<(__8,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove0<T> for This
where This: ?Sized,

Source§

impl<This, T> ArrayMove1<T> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = T> + ?Sized,

Source§

impl<This, T> ArrayMove10<T> for This
where This: ArrayMove_0_8<T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__9,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove11<T> for This
where This: IntoField<TStr<__TS<(__8,)>>, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__9,)>>> + IntoField<TStr<__TS<(__1, __0)>>> + ArrayMove_0_8<T> + ?Sized,

Source§

impl<This, T> ArrayMove12<T> for This
where This: IntoField<TStr<__TS<(__9,)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __0)>>> + ArrayMove_0_8<T> + IntoField<TStr<__TS<(__1, __1)>>> + IntoField<TStr<__TS<(__8,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove13<T> for This
where This: IntoField<TStr<__TS<(__9,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __0)>>> + ArrayMove_0_8<T> + IntoField<TStr<__TS<(__1, __1)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__1, __2)>>> + ?Sized,

Source§

impl<This, T> ArrayMove14<T> for This
where This: IntoField<TStr<__TS<(__1, __0)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_0_8<T> + IntoField<TStr<__TS<(__1, __1)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__1, __2)>>> + IntoField<TStr<__TS<(__1, __3)>>> + IntoField<TStr<__TS<(__9,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove15<T> for This
where This: IntoField<TStr<__TS<(__1, __0)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_0_8<T> + IntoField<TStr<__TS<(__1, __1)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__1, __2)>>> + IntoField<TStr<__TS<(__1, __3)>>> + IntoField<TStr<__TS<(__9,)>>> + IntoField<TStr<__TS<(__1, __4)>>> + ?Sized,

Source§

impl<This, T> ArrayMove16<T> for This
where This: ArrayMove_8_16<T> + ?Sized,

Source§

impl<This, T> ArrayMove17<T> for This
where This: ArrayMove_8_16<T, Ty = T> + IntoField<TStr<__TS<(__1, __6)>>> + ?Sized,

Source§

impl<This, T> ArrayMove18<T> for This
where This: ArrayMove_8_16<T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __6)>>> + IntoField<TStr<__TS<(__1, __7)>>> + ?Sized,

Source§

impl<This, T> ArrayMove19<T> for This
where This: IntoField<TStr<__TS<(__1, __6)>>, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __7)>>> + IntoField<TStr<__TS<(__1, __8)>>> + ArrayMove_8_16<T> + ?Sized,

Source§

impl<This, T> ArrayMove2<T> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove20<T> for This
where This: IntoField<TStr<__TS<(__1, __7)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __8)>>> + ArrayMove_8_16<T> + IntoField<TStr<__TS<(__1, __9)>>> + IntoField<TStr<__TS<(__1, __6)>>> + ?Sized,

Source§

impl<This, T> ArrayMove21<T> for This
where This: IntoField<TStr<__TS<(__1, __7)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__1, __8)>>> + ArrayMove_8_16<T> + IntoField<TStr<__TS<(__1, __9)>>> + IntoField<TStr<__TS<(__1, __6)>>> + IntoField<TStr<__TS<(__2, __0)>>> + ?Sized,

Source§

impl<This, T> ArrayMove22<T> for This
where This: IntoField<TStr<__TS<(__1, __8)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_8_16<T> + IntoField<TStr<__TS<(__1, __9)>>> + IntoField<TStr<__TS<(__1, __6)>>> + IntoField<TStr<__TS<(__2, __0)>>> + IntoField<TStr<__TS<(__2, __1)>>> + IntoField<TStr<__TS<(__1, __7)>>> + ?Sized,

Source§

impl<This, T> ArrayMove23<T> for This
where This: IntoField<TStr<__TS<(__1, __8)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_8_16<T> + IntoField<TStr<__TS<(__1, __9)>>> + IntoField<TStr<__TS<(__1, __6)>>> + IntoField<TStr<__TS<(__2, __0)>>> + IntoField<TStr<__TS<(__2, __1)>>> + IntoField<TStr<__TS<(__1, __7)>>> + IntoField<TStr<__TS<(__2, __2)>>> + ?Sized,

Source§

impl<This, T> ArrayMove24<T> for This
where This: ArrayMove_16_24<T> + ?Sized,

Source§

impl<This, T> ArrayMove25<T> for This
where This: ArrayMove_16_24<T, Ty = T> + IntoField<TStr<__TS<(__2, __4)>>> + ?Sized,

Source§

impl<This, T> ArrayMove26<T> for This
where This: ArrayMove_16_24<T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2, __4)>>> + IntoField<TStr<__TS<(__2, __5)>>> + ?Sized,

Source§

impl<This, T> ArrayMove27<T> for This
where This: IntoField<TStr<__TS<(__2, __4)>>, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2, __5)>>> + IntoField<TStr<__TS<(__2, __6)>>> + ArrayMove_16_24<T> + ?Sized,

Source§

impl<This, T> ArrayMove28<T> for This
where This: IntoField<TStr<__TS<(__2, __5)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2, __6)>>> + ArrayMove_16_24<T> + IntoField<TStr<__TS<(__2, __7)>>> + IntoField<TStr<__TS<(__2, __4)>>> + ?Sized,

Source§

impl<This, T> ArrayMove29<T> for This
where This: IntoField<TStr<__TS<(__2, __5)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2, __6)>>> + ArrayMove_16_24<T> + IntoField<TStr<__TS<(__2, __7)>>> + IntoField<TStr<__TS<(__2, __4)>>> + IntoField<TStr<__TS<(__2, __8)>>> + ?Sized,

Source§

impl<This, T> ArrayMove3<T> for This
where This: IntoField<TStr<__TS<(__1,)>>, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__0,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove30<T> for This
where This: IntoField<TStr<__TS<(__2, __6)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_16_24<T> + IntoField<TStr<__TS<(__2, __7)>>> + IntoField<TStr<__TS<(__2, __4)>>> + IntoField<TStr<__TS<(__2, __8)>>> + IntoField<TStr<__TS<(__2, __9)>>> + IntoField<TStr<__TS<(__2, __5)>>> + ?Sized,

Source§

impl<This, T> ArrayMove31<T> for This
where This: IntoField<TStr<__TS<(__2, __6)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + ArrayMove_16_24<T> + IntoField<TStr<__TS<(__2, __7)>>> + IntoField<TStr<__TS<(__2, __4)>>> + IntoField<TStr<__TS<(__2, __8)>>> + IntoField<TStr<__TS<(__2, __9)>>> + IntoField<TStr<__TS<(__2, __5)>>> + IntoField<TStr<__TS<(__3, __0)>>> + ?Sized,

Source§

impl<This, T> ArrayMove32<T> for This
where This: ArrayMove_16_24<T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2, __7)>>> + IntoField<TStr<__TS<(__2, __4)>>> + IntoField<TStr<__TS<(__2, __8)>>> + IntoField<TStr<__TS<(__2, __9)>>> + IntoField<TStr<__TS<(__2, __5)>>> + IntoField<TStr<__TS<(__3, __0)>>> + IntoField<TStr<__TS<(__3, __1)>>> + IntoField<TStr<__TS<(__2, __6)>>> + ?Sized,

Source§

impl<This, T> ArrayMove4<T> for This
where This: IntoField<TStr<__TS<(__1,)>>, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__0,)>>> + IntoField<TStr<__TS<(__3,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove5<T> for This
where This: IntoField<TStr<__TS<(__2,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__0,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__1,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove6<T> for This
where This: IntoField<TStr<__TS<(__2,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__0,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__5,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove7<T> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T, Ty = T> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__2,)>>> + ?Sized,

Source§

impl<This, T> ArrayMove8<T> for This
where This: ArrayMove_0_8<T> + ?Sized,

Source§

impl<This, T> ArrayMove9<T> for This
where This: ArrayMove_0_8<T, Ty = T> + IntoField<TStr<__TS<(__8,)>>> + ?Sized,

Source§

impl<This, F> IntoFieldMut<F> for This
where This: IntoField<F> + GetFieldMut<F> + ?Sized,

Source§

impl<T, __This> RangeFrom_SI<T> for __This
where __This: IntoFieldMut<TStr<__TS<(__s, __t, __a, __r, __t)>>, Ty = T> + ?Sized,

Source§

impl<T, __This> RangeRef_SI<T> for __This
where __This: GetField<TStr<__TS<(__s, __t, __a, __r, __t)>>, Ty = T, Ty = T> + GetField<TStr<__TS<(__e, __n, __d)>>> + ?Sized,

Source§

impl<T, __This> RangeTo_SI<T> for __This
where __This: IntoFieldMut<TStr<__TS<(__e, __n, __d)>>, Ty = T> + ?Sized,

Source§

impl<T, __This> Range_SI<T> for __This
where __This: IntoFieldMut<TStr<__TS<(__s, __t, __a, __r, __t)>>, Ty = T, Ty = T> + IntoFieldMut<TStr<__TS<(__e, __n, __d)>>> + ?Sized,

Source§

impl<C0, This> Tuple1<C0> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, This> Tuple10<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__7,)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__9,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, This> Tuple11<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9, Ty = C10> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__7,)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__9,)>>> + IntoFieldMut<TStr<__TS<(__1, __0)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, This> Tuple12<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9, Ty = C10, Ty = C11> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__7,)>>> + IntoFieldMut<TStr<__TS<(__8,)>>> + IntoFieldMut<TStr<__TS<(__9,)>>> + IntoFieldMut<TStr<__TS<(__1, __0)>>> + IntoFieldMut<TStr<__TS<(__1, __1)>>>,

Source§

impl<C0, C1, This> Tuple2<C0, C1> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1> + IntoFieldMut<TStr<__TS<(__1,)>>>,

Source§

impl<C0, C1, C2, This> Tuple3<C0, C1, C2> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>>,

Source§

impl<C0, C1, C2, C3, This> Tuple4<C0, C1, C2, C3> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>>,

Source§

impl<C0, C1, C2, C3, C4, This> Tuple5<C0, C1, C2, C3, C4> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, This> Tuple6<C0, C1, C2, C3, C4, C5> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, This> Tuple7<C0, C1, C2, C3, C4, C5, C6> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, This> Tuple8<C0, C1, C2, C3, C4, C5, C6, C7> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__7,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, This> Tuple9<C0, C1, C2, C3, C4, C5, C6, C7, C8> for This
where This: IntoFieldMut<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8> + IntoFieldMut<TStr<__TS<(__1,)>>> + IntoFieldMut<TStr<__TS<(__2,)>>> + IntoFieldMut<TStr<__TS<(__3,)>>> + IntoFieldMut<TStr<__TS<(__4,)>>> + IntoFieldMut<TStr<__TS<(__5,)>>> + IntoFieldMut<TStr<__TS<(__6,)>>> + IntoFieldMut<TStr<__TS<(__7,)>>> + IntoFieldMut<TStr<__TS<(__8,)>>>,

Source§

impl<C0, This> TupleMove1<C0> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, This> TupleMove10<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__7,)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__9,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, This> TupleMove11<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9, Ty = C10> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__7,)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__9,)>>> + IntoField<TStr<__TS<(__1, __0)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, This> TupleMove12<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8, Ty = C9, Ty = C10, Ty = C11> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__7,)>>> + IntoField<TStr<__TS<(__8,)>>> + IntoField<TStr<__TS<(__9,)>>> + IntoField<TStr<__TS<(__1, __0)>>> + IntoField<TStr<__TS<(__1, __1)>>>,

Source§

impl<C0, C1, This> TupleMove2<C0, C1> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1> + IntoField<TStr<__TS<(__1,)>>>,

Source§

impl<C0, C1, C2, This> TupleMove3<C0, C1, C2> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>>,

Source§

impl<C0, C1, C2, C3, This> TupleMove4<C0, C1, C2, C3> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>>,

Source§

impl<C0, C1, C2, C3, C4, This> TupleMove5<C0, C1, C2, C3, C4> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, This> TupleMove6<C0, C1, C2, C3, C4, C5> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, This> TupleMove7<C0, C1, C2, C3, C4, C5, C6> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, This> TupleMove8<C0, C1, C2, C3, C4, C5, C6, C7> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__7,)>>>,

Source§

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, This> TupleMove9<C0, C1, C2, C3, C4, C5, C6, C7, C8> for This
where This: IntoField<TStr<__TS<(__0,)>>, Ty = C0, Ty = C1, Ty = C2, Ty = C3, Ty = C4, Ty = C5, Ty = C6, Ty = C7, Ty = C8> + IntoField<TStr<__TS<(__1,)>>> + IntoField<TStr<__TS<(__2,)>>> + IntoField<TStr<__TS<(__3,)>>> + IntoField<TStr<__TS<(__4,)>>> + IntoField<TStr<__TS<(__5,)>>> + IntoField<TStr<__TS<(__6,)>>> + IntoField<TStr<__TS<(__7,)>>> + IntoField<TStr<__TS<(__8,)>>>,