[][src]Struct structural::NestedFieldPath

#[repr(transparent)]pub struct NestedFieldPath<T> {
    pub list: T,
}

A type-level representation of a chain of field accesses,like .a.b.c.d.

This is the type that fp!(a.b) and fp!(::Foo.bar.baz) construct.
Note: fp!(::Foo.bar) constructs a VariantField.

Construction

You can construct this using (not an exhaustive list):

  • fp macro,when you access a nested field

  • The NestedFieldPath{list} struct literal

  • The one or many constructors.

  • The NEW associated constant,if T implements core_extensions::ConstDefault (reexported in structural::reexports::ConstDefault)

Examples

You can look for examples of using this in the single-field StructuralExt methods, like field_ and field_mut.

Fields

list: T

The list of fields this traverses to access a nested field.

Implementations

impl<T> NestedFieldPath<T> where
    T: ConstDefault
[src]

pub const NEW: Self[src]

Constructs a NestedFieldPath<T>

impl<T> NestedFieldPath<(T,)>[src]

pub const fn one(value: T) -> Self[src]

Construcst a NestedFieldPath from a single path component.

impl<T> NestedFieldPath<T>[src]

pub const fn many(list: T) -> Self[src]

Constructs a NestedFieldPath for a nested field.

Example: NestedFieldPath::many(( ts!(a), ts!(b) )) is equivalent to fp!(a.b)

Example: NestedFieldPath::many(( VariantField::new(ts!(A), ts!(b)), ts!(c) )) is equivalent to fp!(::A.b.c)

impl<T> NestedFieldPath<T>[src]

pub fn push<U, V>(self, _other: U) -> NestedFieldPath<V> where
    Self: PushBack<U, Output = NestedFieldPath<V>>,
    NestedFieldPath<V>: ConstDefault
[src]

Constructs a new NestedFieldPath with _other appended at the end.

Example arguments:fp!(a)/fp!(::Foo.bar)/fp!(::Foo)

pub fn append<U>(
    self,
    _other: NestedFieldPath<U>
) -> NestedFieldPath<AppendOut<T, U>> where
    T: Append<U>,
    NestedFieldPath<AppendOut<T, U>>: ConstDefault
[src]

Constructs a new NestedFieldPath with _other appended at the end.

Example arguments:fp!(a,b)/fp!(::Foo.bar.baz)

pub const fn into_set(self) -> FieldPathSet<(Self,), UniquePaths>[src]

Converts this NestedFieldPath to a FieldPathSet.

Example

use structural::{StructuralExt, fp};

let tup=(3,(5,8),(13,21));

assert_eq!( tup.fields(fp!(2.0).into_set()), (&13,) );

impl<C> NestedFieldPath<(C,)>[src]

pub fn into_component(self) -> C[src]

Unwraps this non-nested field path into C.

This can also be done with path.list.0.

Trait Implementations

impl<T, U> Append<NestedFieldPath<U>> for NestedFieldPath<T> where
    T: Append<U>, 
[src]

type Output = NestedFieldPath<AppendOut<T, U>>

The return value of this trait.

impl<T: Clone> Clone for NestedFieldPath<T>[src]

impl<T> ConstDefault for NestedFieldPath<T> where
    T: ConstDefault
[src]

impl<T: Copy> Copy for NestedFieldPath<T>[src]

impl<T> Debug for NestedFieldPath<T>[src]

impl<T: Default> Default for NestedFieldPath<T>[src]

impl<T> Eq for NestedFieldPath<T>[src]

impl<T> IsMultiFieldPath for NestedFieldPath<T>[src]

type PathUniqueness = UniquePaths

Whether the paths in the set can contain duplicate paths. Read more

impl<T> IsSingleFieldPath for NestedFieldPath<T>[src]

impl<T> Ord for NestedFieldPath<T>[src]

impl<T> PartialEq<NestedFieldPath<T>> for NestedFieldPath<T>[src]

impl<T> PartialOrd<NestedFieldPath<T>> for NestedFieldPath<T>[src]

impl<T, U, P> PushBack<NestedFieldPath<P>> for FieldPathSet<T, U> where
    T: PushBack<NestedFieldPath<P>>, 
[src]

type Output = FieldPathSet<PushBackOut<T, NestedFieldPath<P>>, AliasedPaths>

The return value of this trait.

impl<T, S> PushBack<S> for NestedFieldPath<T> where
    T: PushBack<S>, 
[src]

type Output = NestedFieldPath<PushBackOut<T, S>>

The return value of this trait.

impl<F0, T0, E0, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    FL: RevFieldErr<T0, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    FL: RevFieldErr<T1, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, F2, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    F2: RevFieldErr<T1, Ty = T2, Err = E2>,
    E2: IsFieldErr,
    T2: ?Sized,
    FL: RevFieldErr<T2, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, E2, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, F2, F3, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    F2: RevFieldErr<T1, Ty = T2, Err = E2>,
    E2: IsFieldErr,
    T2: ?Sized,
    F3: RevFieldErr<T2, Ty = T3, Err = E3>,
    E3: IsFieldErr,
    T3: ?Sized,
    FL: RevFieldErr<T3, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, E2, E3, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, F2, F3, F4, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    F2: RevFieldErr<T1, Ty = T2, Err = E2>,
    E2: IsFieldErr,
    T2: ?Sized,
    F3: RevFieldErr<T2, Ty = T3, Err = E3>,
    E3: IsFieldErr,
    T3: ?Sized,
    F4: RevFieldErr<T3, Ty = T4, Err = E4>,
    E4: IsFieldErr,
    T4: ?Sized,
    FL: RevFieldErr<T4, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, E2, E3, E4, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, F5, T5, E5, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    F2: RevFieldErr<T1, Ty = T2, Err = E2>,
    E2: IsFieldErr,
    T2: ?Sized,
    F3: RevFieldErr<T2, Ty = T3, Err = E3>,
    E3: IsFieldErr,
    T3: ?Sized,
    F4: RevFieldErr<T3, Ty = T4, Err = E4>,
    E4: IsFieldErr,
    T4: ?Sized,
    F5: RevFieldErr<T4, Ty = T5, Err = E5>,
    E5: IsFieldErr,
    T5: ?Sized,
    FL: RevFieldErr<T5, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, E2, E3, E4, E5, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, F5, T5, E5, F6, T6, E6, FL, TL, EL, This, CombErr> RevFieldErr<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, F6, FL)> where
    This: ?Sized,
    F0: RevFieldErr<This, Ty = T0, Err = E0>,
    E0: IsFieldErr,
    T0: ?Sized,
    F1: RevFieldErr<T0, Ty = T1, Err = E1>,
    E1: IsFieldErr,
    T1: ?Sized,
    F2: RevFieldErr<T1, Ty = T2, Err = E2>,
    E2: IsFieldErr,
    T2: ?Sized,
    F3: RevFieldErr<T2, Ty = T3, Err = E3>,
    E3: IsFieldErr,
    T3: ?Sized,
    F4: RevFieldErr<T3, Ty = T4, Err = E4>,
    E4: IsFieldErr,
    T4: ?Sized,
    F5: RevFieldErr<T4, Ty = T5, Err = E5>,
    E5: IsFieldErr,
    T5: ?Sized,
    F6: RevFieldErr<T5, Ty = T6, Err = E6>,
    E6: IsFieldErr,
    T6: ?Sized,
    FL: RevFieldErr<T6, Ty = TL, Err = EL>,
    EL: IsFieldErr,
    TL: ?Sized,
    (E0, E1, E2, E3, E4, E5, E6, EL): CombinedErrs<Combined = CombErr>,
    CombErr: IsFieldErr
[src]

type Err = CombErr

The error returned by rev_* methods. Read more

impl<This> RevFieldErr<This> for NestedFieldPath<()> where
    This: ?Sized
[src]

type Err = InfallibleAccess

The error returned by rev_* methods. Read more

impl<This, F0> RevFieldErr<This> for NestedFieldPath<(F0,)> where
    This: ?Sized,
    F0: RevFieldErr<This>, 
[src]

type Err = F0::Err

The error returned by rev_* methods. Read more

impl<F0, T0, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    FL: RevFieldType<T0, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    FL: RevFieldType<T1, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, F2, T2, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, F2, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    F2: RevFieldType<T1, Ty = T2>,
    T2: ?Sized,
    FL: RevFieldType<T2, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, F2, T2, F3, T3, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, F2, F3, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    F2: RevFieldType<T1, Ty = T2>,
    T2: ?Sized,
    F3: RevFieldType<T2, Ty = T3>,
    T3: ?Sized,
    FL: RevFieldType<T3, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, F2, F3, F4, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    F2: RevFieldType<T1, Ty = T2>,
    T2: ?Sized,
    F3: RevFieldType<T2, Ty = T3>,
    T3: ?Sized,
    F4: RevFieldType<T3, Ty = T4>,
    T4: ?Sized,
    FL: RevFieldType<T4, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, F5, T5, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    F2: RevFieldType<T1, Ty = T2>,
    T2: ?Sized,
    F3: RevFieldType<T2, Ty = T3>,
    T3: ?Sized,
    F4: RevFieldType<T3, Ty = T4>,
    T4: ?Sized,
    F5: RevFieldType<T4, Ty = T5>,
    T5: ?Sized,
    FL: RevFieldType<T5, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, F5, T5, F6, T6, FL, TL, This> RevFieldType<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, F6, FL)> where
    This: ?Sized,
    F0: RevFieldType<This, Ty = T0>,
    T0: ?Sized,
    F1: RevFieldType<T0, Ty = T1>,
    T1: ?Sized,
    F2: RevFieldType<T1, Ty = T2>,
    T2: ?Sized,
    F3: RevFieldType<T2, Ty = T3>,
    T3: ?Sized,
    F4: RevFieldType<T3, Ty = T4>,
    T4: ?Sized,
    F5: RevFieldType<T4, Ty = T5>,
    T5: ?Sized,
    F6: RevFieldType<T5, Ty = T6>,
    T6: ?Sized,
    FL: RevFieldType<T6, Ty = TL>,
    TL: ?Sized
[src]

type Ty = TL

The type of the field.

impl<This> RevFieldType<This> for NestedFieldPath<()> where
    This: ?Sized
[src]

type Ty = This

The type of the field.

impl<This, F0> RevFieldType<This> for NestedFieldPath<(F0,)> where
    This: ?Sized,
    F0: RevFieldType<This>, 
[src]

type Ty = F0::Ty

The type of the field.

impl<'a, F0, T0: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T0, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T1, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, F2, T2: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, F2, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T2, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, F2, T2: ?Sized, F3, T3: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T3, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, F2, T2: ?Sized, F3, T3: ?Sized, F4, T4: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T4, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, F2, T2: ?Sized, F3, T3: ?Sized, F4, T4: ?Sized, F5, T5: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    F5: RevGetFieldImpl<'a, T4, Ty = T5>,
    T5: 'a,
    F5::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T5, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, F0, T0: ?Sized, F1, T1: ?Sized, F2, T2: ?Sized, F3, T3: ?Sized, F4, T4: ?Sized, F5, T5: ?Sized, F6, T6: ?Sized, FL, TL: ?Sized, This: ?Sized, CombErr> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, F6, FL)> where
    This: 'a,
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    F5: RevGetFieldImpl<'a, T4, Ty = T5>,
    T5: 'a,
    F5::Err: IntoFieldErr<CombErr>,
    F6: RevGetFieldImpl<'a, T5, Ty = T6>,
    T6: 'a,
    F6::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldImpl<'a, T6, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>, 
[src]

impl<'a, This: ?Sized> RevGetFieldImpl<'a, This> for NestedFieldPath<()> where
    This: 'a, 
[src]

impl<'a, This: ?Sized, F0> RevGetFieldImpl<'a, This> for NestedFieldPath<(F0,)> where
    This: 'a,
    F0: RevGetFieldImpl<'a, This>, 
[src]

impl<'a, F0, T0, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T0, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T1, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, F2, T2, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, F2, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldMutImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T2, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, F2, T2, F3, T3, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldMutImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldMutImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T3, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldMutImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldMutImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldMutImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T4, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, F5, T5, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldMutImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldMutImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldMutImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    F5: RevGetFieldMutImpl<'a, T4, Ty = T5>,
    T5: 'a,
    F5::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T5, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, F0, T0, F1, T1, F2, T2, F3, T3, F4, T4, F5, T5, F6, T6, FL, TL, This: ?Sized, CombErr> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, F6, FL)> where
    This: 'a,
    Self: RevGetFieldImpl<'a, This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    F0: RevGetFieldMutImpl<'a, This, Ty = T0>,
    T0: 'a,
    F0::Err: IntoFieldErr<CombErr>,
    F1: RevGetFieldMutImpl<'a, T0, Ty = T1>,
    T1: 'a,
    F1::Err: IntoFieldErr<CombErr>,
    F2: RevGetFieldMutImpl<'a, T1, Ty = T2>,
    T2: 'a,
    F2::Err: IntoFieldErr<CombErr>,
    F3: RevGetFieldMutImpl<'a, T2, Ty = T3>,
    T3: 'a,
    F3::Err: IntoFieldErr<CombErr>,
    F4: RevGetFieldMutImpl<'a, T3, Ty = T4>,
    T4: 'a,
    F4::Err: IntoFieldErr<CombErr>,
    F5: RevGetFieldMutImpl<'a, T4, Ty = T5>,
    T5: 'a,
    F5::Err: IntoFieldErr<CombErr>,
    F6: RevGetFieldMutImpl<'a, T5, Ty = T6>,
    T6: 'a,
    F6::Err: IntoFieldErr<CombErr>,
    FL: RevGetFieldMutImpl<'a, T6, Ty = TL>,
    TL: 'a,
    FL::Err: IntoFieldErr<CombErr>,
    TL: Sized
[src]

impl<'a, This: ?Sized> RevGetFieldMutImpl<'a, This> for NestedFieldPath<()> where
    This: 'a, 
[src]

impl<'a, This: ?Sized, F0> RevGetFieldMutImpl<'a, This> for NestedFieldPath<(F0,)> where
    This: 'a,
    F0: RevGetFieldMutImpl<'a, This>, 
[src]

impl<'a, This: ?Sized, T> RevGetMultiFieldImpl<'a, This> for NestedFieldPath<T> where
    Self: RevGetFieldImpl<'a, This>,
    This: 'a,
    RGFT<Self, This>: 'a,
    Result<&'a RGFT<Self, This>, RGFE<Self, This>>: 'a + NormalizeFields
[src]

type UnnormFields = (Result<&'a RGFT<Self, This>, RGFE<Self, This>>,)

A collection of Results<&'a _,_>s referencing fields.

impl<'a, This: ?Sized, T> RevGetMultiFieldMutImpl<'a, This> for NestedFieldPath<T> where
    Self: RevGetFieldMutImpl<'a, This>,
    This: 'a,
    RGFT<Self, This>: 'a,
    Result<&'a mut RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields,
    Result<*mut RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields
[src]

type UnnormFieldsMut = (Result<&'a mut RGFT<Self, This>, RGFE<Self, This>>,)

This is usually a tuple of Result<&mut _,E: IsFieldErr>s.

type UnnormFieldsRawMut = (Result<*mut RGFT<Self, This>, RGFE<Self, This>>,)

This is usually a tuple of Result<*mut _,E: IsFieldErr>s.

impl<F0, T0, E0, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    FL: RevIntoFieldImpl<T0, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    FL: RevIntoFieldImpl<T1, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, F2, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    F2: RevIntoFieldImpl<T1, Ty = T2, Err = E2>,
    FL: RevIntoFieldImpl<T2, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    E2: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, F2, F3, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    F2: RevIntoFieldImpl<T1, Ty = T2, Err = E2>,
    F3: RevIntoFieldImpl<T2, Ty = T3, Err = E3>,
    FL: RevIntoFieldImpl<T3, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    E2: IntoFieldErr<CombErr>,
    E3: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, F2, F3, F4, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    F2: RevIntoFieldImpl<T1, Ty = T2, Err = E2>,
    F3: RevIntoFieldImpl<T2, Ty = T3, Err = E3>,
    F4: RevIntoFieldImpl<T3, Ty = T4, Err = E4>,
    FL: RevIntoFieldImpl<T4, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    E2: IntoFieldErr<CombErr>,
    E3: IntoFieldErr<CombErr>,
    E4: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, F5, T5, E5, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    F2: RevIntoFieldImpl<T1, Ty = T2, Err = E2>,
    F3: RevIntoFieldImpl<T2, Ty = T3, Err = E3>,
    F4: RevIntoFieldImpl<T3, Ty = T4, Err = E4>,
    F5: RevIntoFieldImpl<T4, Ty = T5, Err = E5>,
    FL: RevIntoFieldImpl<T5, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    E2: IntoFieldErr<CombErr>,
    E3: IntoFieldErr<CombErr>,
    E4: IntoFieldErr<CombErr>,
    E5: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<F0, T0, E0, F1, T1, E1, F2, T2, E2, F3, T3, E3, F4, T4, E4, F5, T5, E5, F6, T6, E6, FL, TL, EL, This, CombErr> RevIntoFieldImpl<This> for NestedFieldPath<(F0, F1, F2, F3, F4, F5, F6, FL)> where
    Self: RevFieldErr<This, Ty = TL, Err = CombErr>,
    CombErr: IsFieldErr,
    This: ?Sized,
    F0: RevIntoFieldImpl<This, Ty = T0, Err = E0>,
    F1: RevIntoFieldImpl<T0, Ty = T1, Err = E1>,
    F2: RevIntoFieldImpl<T1, Ty = T2, Err = E2>,
    F3: RevIntoFieldImpl<T2, Ty = T3, Err = E3>,
    F4: RevIntoFieldImpl<T3, Ty = T4, Err = E4>,
    F5: RevIntoFieldImpl<T4, Ty = T5, Err = E5>,
    F6: RevIntoFieldImpl<T5, Ty = T6, Err = E6>,
    FL: RevIntoFieldImpl<T6, Ty = TL, Err = EL>,
    E0: IntoFieldErr<CombErr>,
    E1: IntoFieldErr<CombErr>,
    E2: IntoFieldErr<CombErr>,
    E3: IntoFieldErr<CombErr>,
    E4: IntoFieldErr<CombErr>,
    E5: IntoFieldErr<CombErr>,
    E6: IntoFieldErr<CombErr>,
    EL: IntoFieldErr<CombErr>, 
[src]

impl<This> RevIntoFieldImpl<This> for NestedFieldPath<()>[src]

impl<This, F0> RevIntoFieldImpl<This> for NestedFieldPath<(F0,)> where
    This: ?Sized,
    F0: RevIntoFieldImpl<This>, 
[src]

impl<This, T> RevIntoMultiFieldImpl<This> for NestedFieldPath<T> where
    Self: RevIntoFieldImpl<This>,
    RGFT<Self, This>: Sized,
    Result<RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields
[src]

type UnnormIntoFields = (Result<RGFT<Self, This>, RGFE<Self, This>>,)

This is usually a tuple of Result<_, E: IsFieldErr>s.

impl<This, F0> RevMoveOutFieldImpl<This> for NestedFieldPath<(F0,)> where
    This: ?Sized,
    F0: RevMoveOutFieldImpl<This>, 
[src]

impl<F0> ShallowFieldPath for NestedFieldPath<(F0,)> where
    F0: ShallowFieldPath
[src]

impl<S> ToUsize for NestedFieldPath<(S,)> where
    S: ToUsize
[src]

Single index NestedFieldPaths up to 19 digits can be converted to usize (assuming that usize can store that number)

Auto Trait Implementations

impl<T> RefUnwindSafe for NestedFieldPath<T> where
    T: RefUnwindSafe

impl<T> Send for NestedFieldPath<T> where
    T: Send

impl<T> Sync for NestedFieldPath<T> where
    T: Sync

impl<T> Unpin for NestedFieldPath<T> where
    T: Unpin

impl<T> UnwindSafe for NestedFieldPath<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

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

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

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

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<This, T> IntoStructural<T> for This where
    T: FromStructural<This>, 
[src]

impl<'a, Path, This> OptRevGetField<'a, This> for Path where
    Path: RevGetFieldImpl<'a, This, Err = FailedAccess>, 
[src]

impl<'a, Path, This> OptRevGetFieldMut<'a, This> for Path where
    Path: RevGetFieldMutImpl<'a, This, Err = FailedAccess>, 
[src]

impl<Path, This> OptRevIntoField<This> for Path where
    Path: RevIntoFieldImpl<This, Err = FailedAccess>, 
[src]

impl<'a, Path, This> OptRevIntoFieldMut<'a, This> for Path where
    Path: OptRevIntoField<This> + OptRevGetFieldMut<'a, This>, 
[src]

impl<'a, Path, This> OptRevIntoFieldRef<'a, This> for Path where
    Path: OptRevIntoField<This> + OptRevGetFieldMut<'a, This>, 
[src]

impl<'a, Path, This> RevGetField<'a, This> for Path where
    Path: RevGetFieldImpl<'a, This, Err = InfallibleAccess>, 
[src]

impl<'a, Path, This> RevGetFieldMut<'a, This> for Path where
    Path: RevGetFieldMutImpl<'a, This, Err = InfallibleAccess>, 
[src]

impl<'a, This, Path> RevGetMultiField<'a, This> for Path where
    Path: RevGetMultiFieldImpl<'a, This>,
    This: 'a + ?Sized
[src]

type Fields = <<Path as RevGetMultiFieldImpl<'a, This>>::UnnormFields as NormalizeFields>::Output

This is usually a tuple of Option<&_>s and &_s.

impl<'a, This, Path> RevGetMultiFieldMut<'a, This> for Path where
    Path: RevGetMultiFieldMutImpl<'a, This>,
    This: 'a + ?Sized
[src]

type FieldsMut = <<Path as RevGetMultiFieldMutImpl<'a, This>>::UnnormFieldsMut as NormalizeFields>::Output

This is usually a tuple of Option<&mut _>s and &mut _s.

type FieldsRawMut = <<Path as RevGetMultiFieldMutImpl<'a, This>>::UnnormFieldsRawMut as NormalizeFields>::Output

This is usually a tuple of Option<*mut _>s and *mut _s.

impl<Path, This> RevIntoField<This> for Path where
    Path: RevIntoFieldImpl<This, Err = InfallibleAccess>, 
[src]

impl<'a, Path, This> RevIntoFieldMut<'a, This> for Path where
    Path: RevIntoField<This> + RevGetFieldMut<'a, This>, 
[src]

impl<'a, Path, This> RevIntoFieldRef<'a, This> for Path where
    Path: RevIntoField<This> + RevGetFieldMut<'a, This>, 
[src]

impl<This, Path> RevIntoMultiField<This> for Path where
    Path: RevIntoMultiFieldImpl<This>, 
[src]

type IntoFields = <<Path as RevIntoMultiFieldImpl<This>>::UnnormIntoFields as NormalizeFields>::Output

This is usually a tuple of Option<T>s and Ts.

impl<T> SelfOps for T where
    T: ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The error type returned when the conversion fails.

impl<This, T> TryIntoStructural<T> for This where
    T: TryFromStructural<This>, 
[src]

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

The error parameter of TryFromError, returned from try_into_structural on conversion error. Read more

impl<T> TypeIdentity for T where
    T: ?Sized
[src]

type Type = T

The same type as Self. Read more