[][src]Trait structural::field::GetField

pub trait GetField<FieldName>: FieldType<FieldName> {
    fn get_field_(&self, field_name: FieldName) -> &Self::Ty;
}

Provides shared access to the FieldName field.

FieldName is expected to be a TStr.

Safety

While this trait is not unsafe, implementors ought not mutate fields inside accessor trait impls.

Mutating fields is only advisable if those fields don't have field accessor impls.

Usage as Bound Example

use structural::{StructuralExt,GetField,FP,fp};

fn example(this:impl GetField<FP!(0), Ty=u32> + GetField<FP!(1), Ty=&'static str>){
    assert_eq!( this.field_(fp!(0)), &99 );
    assert_eq!( this.field_(fp!(1)), &"world" );

    assert_eq!( this.fields(fp!(0,1)), (&99, &"world") );
    assert_eq!( this.cloned_fields(fp!(0,1)), (99, "world") );
}

example((99,"world",));
example((99,"world",100,101,102,));

Manual Implementation Example

While this trait is intended to be implemented using the Structural derive macro, you can manually implement it like this:

use structural::{FieldType,GetField,Structural,FP};

struct Huh<T>{
    value:T,
}

impl<T> Structural for Huh<T>{}


impl<T> FieldType<FP!(value)> for Huh<T>{
    type Ty=T;
}

impl<T> GetField<FP!(value)> for Huh<T>{
    fn get_field_(&self,_:FP!(value))->&Self::Ty{
        &self.value
    }
}

Required methods

fn get_field_(&self, field_name: FieldName) -> &Self::Ty

Accesses the FieldName field by reference.

Loading content...

Implementations on Foreign Types

impl<T, P> GetField<P> for [T; 0] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 1] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 2] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 3] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 4] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 5] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 6] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 7] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 8] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 9] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 10] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 11] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 12] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 13] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 14] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 15] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 16] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 17] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 18] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 19] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 20] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 21] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 22] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 23] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 24] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 25] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 26] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 27] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 28] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 29] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 30] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 31] where
    P: IsPathForArray<Self>, 
[src]

impl<T, P> GetField<P> for [T; 32] where
    P: IsPathForArray<Self>, 
[src]

impl<T> GetField<TStr<__TS<(__s, __t, __a, __r, __t)>>> for Range<T>[src]

impl<T> GetField<TStr<__TS<(__e, __n, __d)>>> for Range<T>[src]

impl<T> GetField<TStr<__TS<(__s, __t, __a, __r, __t)>>> for RangeFrom<T>[src]

impl<T> GetField<TStr<__TS<(__e, __n, __d)>>> for RangeTo<T>[src]

impl<T> GetField<TStr<__TS<(__e, __n, __d)>>> for RangeToInclusive<T>[src]

impl<T> GetField<TStr<__TS<(__s, __t, __a, __r, __t)>>> for RangeInclusive<T>[src]

impl<T> GetField<TStr<__TS<(__e, __n, __d)>>> for RangeInclusive<T>[src]

impl<T, __F, __Ty> GetField<__F> for ManuallyDrop<T> where
    T: GetField<__F, Ty = __Ty>, 
[src]

impl<P, __F, __Ty> GetField<__F> for Pin<P> where
    P::Target: GetField<__F, Ty = __Ty>,
    P: Deref,
    P::Target: Sized
[src]

impl<T, __F, __Ty> GetField<__F> for Arc<T> where
    T: GetField<__F, Ty = __Ty>,
    T: ?Sized
[src]

impl<T, __F, __Ty> GetField<__F> for Rc<T> where
    T: GetField<__F, Ty = __Ty>,
    T: ?Sized
[src]

impl<T, __F, __Ty> GetField<__F> for Box<T> where
    T: GetField<__F, Ty = __Ty>,
    T: ?Sized
[src]

impl<'a, T, __F, __Ty> GetField<__F> for &'a T where
    T: GetField<__F, Ty = __Ty>,
    T: ?Sized
[src]

impl<'a, T, __F, __Ty> GetField<__F> for &'a mut T where
    T: GetField<__F, Ty = __Ty>,
    T: 'a + ?Sized
[src]

impl<C0> GetField<TStr<__TS<(__0,)>>> for (C0,)[src]

impl<C0, C1> GetField<TStr<__TS<(__0,)>>> for (C0, C1)[src]

impl<C0, C1> GetField<TStr<__TS<(__1,)>>> for (C0, C1)[src]

impl<C0, C1, C2> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2)[src]

impl<C0, C1, C2> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2)[src]

impl<C0, C1, C2> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2)[src]

impl<C0, C1, C2, C3> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3, C4> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TStr<__TS<(__7,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__7,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TStr<__TS<(__8,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__7,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__8,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TStr<__TS<(__9,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__7,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__8,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__9,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TStr<__TS<(__1, __0)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__0,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__1,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__2,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__3,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__4,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__5,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__6,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__7,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__8,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__9,)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__1, __0)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TStr<__TS<(__1, __1)>>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

Loading content...

Implementors

impl<T, __F, __Ty> GetField<__F> for FieldCloner<T> where
    T: GetField<__F, Ty = __Ty>, 
[src]

impl<T, __F, __Ty> GetField<__F> for StrucWrapper<T> where
    T: GetField<__F, Ty = __Ty>, 
[src]

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

Loading content...