[][src]Trait structural::field_traits::IntoField

pub trait IntoField<FieldName>: GetField<FieldName> {
    fn into_field_(self) -> Self::Ty
    where
        Self: Sized
;
fn box_into_field_(self: Box<Self>) -> Self::Ty; }

Converts this type into its FieldName field.

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::{IntoField,GetFieldExt,GetFieldType,TI,ti};
 
fn into_value<T,V>(this:T)->V
where
    T:IntoField<TI!(v a l u e), Ty=V>,
{
    this.into_field(ti!(value))
}

#[derive(structural::Structural)]
struct Huh<T>{
    #[struc(access="move")]
    value:T,
}
 
fn main(){
    let this=Huh{value:"Hello, World!"};
    assert_eq!(into_value(this),"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,IntoField,Structural,TI,TList,
    structural_trait::{FieldInfo,TField},
    mut_ref::MutRef,
    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
    }
}

impl<T> IntoField<TI!(v a l u e)> for Huh<T>{
    fn into_field_(self)->Self::Ty{
        self.value
    }

    structural::impl_box_into_field_method!{TI!(v a l u e)}
}

Required methods

fn into_field_(self) -> Self::Ty where
    Self: Sized

Converts self into the field.

fn box_into_field_(self: Box<Self>) -> Self::Ty

Converts a boxed self into the field.

Loading content...

Implementations on Foreign Types

impl<C0> IntoField<TString<(_0,)>> for (C0,)[src]

impl<C0, C1> IntoField<TString<(_0,)>> for (C0, C1)[src]

impl<C0, C1> IntoField<TString<(_1,)>> for (C0, C1)[src]

impl<C0, C1, C2> IntoField<TString<(_0,)>> for (C0, C1, C2)[src]

impl<C0, C1, C2> IntoField<TString<(_1,)>> for (C0, C1, C2)[src]

impl<C0, C1, C2> IntoField<TString<(_2,)>> for (C0, C1, C2)[src]

impl<C0, C1, C2, C3> IntoField<TString<(_0,)>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> IntoField<TString<(_1,)>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> IntoField<TString<(_2,)>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3> IntoField<TString<(_3,)>> for (C0, C1, C2, C3)[src]

impl<C0, C1, C2, C3, C4> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5> IntoField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6> IntoField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7> IntoField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8> IntoField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_0,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_1,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_2,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_3,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_4,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_5,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_6,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_7,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_8,)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)[src]

impl<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_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> IntoField<TString<(_1, _1)>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)[src]

impl<T> IntoField<TString<(_s, _t, _a, _r, _t)>> for Range<T>[src]

impl<T> IntoField<TString<(_e, _n, _d)>> for Range<T>[src]

impl<T> IntoField<TString<(_s, _t, _a, _r, _t)>> for RangeFrom<T>[src]

impl<T> IntoField<TString<(_e, _n, _d)>> for RangeTo<T>[src]

impl<T> IntoField<TString<(_e, _n, _d)>> for RangeToInclusive<T>[src]

impl<T> IntoField<TString<(_s, _t, _a, _r, _t)>> for RangeInclusive<T>[src]

impl<T> IntoField<TString<(_e, _n, _d)>> for RangeInclusive<T>[src]

impl<T, __FieldName> IntoField<__FieldName> for ManuallyDrop<T> where
    T: IntoField<__FieldName>, 
[src]

Loading content...

Implementors

Loading content...