[][src]Struct synstructure::BindingInfo

pub struct BindingInfo<'a> {
    pub binding: Ident,
    pub style: BindStyle,
    // some fields omitted
}

Information about a specific binding. This contains both an Ident reference to the given field, and the syn &'a Field descriptor for that field.

This type supports quote::ToTokens, so can be directly used within the quote! macro. It expands to a reference to the matched field.

Fields

binding: Ident

The name which this BindingInfo will bind to.

style: BindStyle

The type of binding which this BindingInfo will create.

Implementations

impl<'a> BindingInfo<'a>[src]

pub fn ast(&self) -> &'a Field[src]

Returns a reference to the underlying syn AST node which this BindingInfo references

pub fn pat(&self) -> TokenStream[src]

Generates the pattern fragment for this field binding.

Example

let di: syn::DeriveInput = syn::parse_quote! {
    enum A {
        B{ a: i32, b: i32 },
        C(u32),
    }
};
let s = Structure::new(&di);

assert_eq!(
    s.variants()[0].bindings()[0].pat().to_string(),
    quote! {
        ref __binding_0
    }.to_string()
);

pub fn referenced_ty_params(&self) -> Vec<&'a Ident>[src]

Returns a list of the type parameters which are referenced in this field's type.

Caveat

If the field contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

Example

let di: syn::DeriveInput = syn::parse_quote! {
    struct A<T, U> {
        a: Option<T>,
        b: U,
    }
};
let mut s = Structure::new(&di);

assert_eq!(
    s.variants()[0].bindings()[0].referenced_ty_params(),
    &[&quote::format_ident!("T")]
);

Trait Implementations

impl<'a> Clone for BindingInfo<'a>[src]

impl<'a> Debug for BindingInfo<'a>[src]

impl<'a> Eq for BindingInfo<'a>[src]

impl<'a> Hash for BindingInfo<'a>[src]

impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>[src]

impl<'a> StructuralEq for BindingInfo<'a>[src]

impl<'a> StructuralPartialEq for BindingInfo<'a>[src]

impl<'a> ToTokens for BindingInfo<'a>[src]

Auto Trait Implementations

impl<'a> !RefUnwindSafe for BindingInfo<'a>

impl<'a> !Send for BindingInfo<'a>

impl<'a> !Sync for BindingInfo<'a>

impl<'a> Unpin for BindingInfo<'a>

impl<'a> !UnwindSafe for BindingInfo<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?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<T> Spanned for T where
    T: Spanned + ?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.