[−][src]Trait structural::field_traits::GetField
Allows accessing the FieldName
field.
FieldName
represents the name of the field on the type level,
It is a type because a FIELD_NAME:&'static str
const parameter
was neither stable nor worked in nightly at the time this was defined.
Usage as Bound Example
This example demonstrates how you can use this trait as a bound.
If you have a lot of field accessor bounds you could use structural_alias
macro
to alias those bounds and use that alias instead.
use structural::{GetField,GetFieldExt,TI,ti}; fn formatted_value<T,S>(this:&T)->String where T:GetField<TI!(v a l u e), Ty=S>, S:std::fmt::Debug, { format!("{:#?}",this.field_(ti!(value)) ) } #[derive(structural::Structural)] struct Huh<T>{ #[struc(access="mut")] value:T, } fn main(){ let this=Huh{value:"Hello, World!"}; assert!( formatted_value(&this).contains("Hello, World!") ); }
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::{ GetField,Structural,TI,TList, structural_trait::{FieldInfo,TField}, impl_structural_dyn, }; struct Huh<T>{ value:T, } impl<T> Structural for Huh<T>{ const FIELDS:&'static[FieldInfo]=&[FieldInfo::not_renamed("value")]; type Fields=TList![ TField<TI!(v a l u e),T> ]; } impl_structural_dyn!{ impl[T] Huh<T> } impl<T> GetField<TI!(v a l u e)> for Huh<T>{ type Ty=T; fn get_field_(&self)->&Self::Ty{ &self.value } }
Associated Types
type Ty
The type of the FieldName
field.
Required methods
fn get_field_(&self) -> &Self::Ty
Accesses the FieldName
field by reference.
Implementations on Foreign Types
impl<C0> GetField<TString<(_0,)>> for (C0,)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1> GetField<TString<(_0,)>> for (C0, C1)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1> GetField<TString<(_1,)>> for (C0, C1)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2> GetField<TString<(_0,)>> for (C0, C1, C2)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2> GetField<TString<(_1,)>> for (C0, C1, C2)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2> GetField<TString<(_2,)>> for (C0, C1, C2)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3> GetField<TString<(_0,)>> for (C0, C1, C2, C3)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3> GetField<TString<(_1,)>> for (C0, C1, C2, C3)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3> GetField<TString<(_2,)>> for (C0, C1, C2, C3)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3> GetField<TString<(_3,)>> for (C0, C1, C2, C3)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7> GetField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)
[src]
type Ty = C7
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C7
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> GetField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)
[src]
type Ty = C8
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C7
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C8
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> GetField<TString<(_9,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)
[src]
type Ty = C9
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C7
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C8
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_9,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C9
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> GetField<TString<(_1, _0)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)
[src]
type Ty = C10
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C0
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C1
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C2
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C3
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C4
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C5
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C6
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C7
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C8
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_9,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C9
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_1, _0)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C10
fn get_field_(&self) -> &Self::Ty
[src]
impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> GetField<TString<(_1, _1)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)
[src]
type Ty = C11
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_s, _t, _a, _r, _t)>> for Range<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_e, _n, _d)>> for Range<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_s, _t, _a, _r, _t)>> for RangeFrom<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_e, _n, _d)>> for RangeTo<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_e, _n, _d)>> for RangeToInclusive<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_s, _t, _a, _r, _t)>> for RangeInclusive<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T> GetField<TString<(_e, _n, _d)>> for RangeInclusive<T>
[src]
type Ty = T
fn get_field_(&self) -> &Self::Ty
[src]
impl<T, __FieldName> GetField<__FieldName> for ManuallyDrop<T> where
T: GetField<__FieldName>,
[src]
T: GetField<__FieldName>,
type Ty = GetFieldType<T, __FieldName>
fn get_field_(&self) -> &Self::Ty
[src]
impl<P, __FieldName> GetField<__FieldName> for Pin<P> where
P::Target: GetField<__FieldName>,
P: Deref,
P::Target: Sized,
[src]
P::Target: GetField<__FieldName>,
P: Deref,
P::Target: Sized,
type Ty = GetFieldType<P::Target, __FieldName>
fn get_field_(&self) -> &Self::Ty
[src]
impl<This: ?Sized, Name, Ty> GetField<Name> for Box<This> where
This: GetField<Name, Ty = Ty>,
[src]
This: GetField<Name, Ty = Ty>,
type Ty = Ty
fn get_field_(&self) -> &Self::Ty
[src]
impl<This: ?Sized, Name, Ty> GetField<Name> for Arc<This> where
This: GetField<Name, Ty = Ty>,
[src]
This: GetField<Name, Ty = Ty>,
type Ty = Ty
fn get_field_(&self) -> &Self::Ty
[src]
impl<This: ?Sized, Name, Ty> GetField<Name> for Rc<This> where
This: GetField<Name, Ty = Ty>,
[src]
This: GetField<Name, Ty = Ty>,