[][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

The name which this BindingInfo will bind to.

The type of binding which this BindingInfo will create.

Methods

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

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

Generates the pattern fragment for this field binding.

Example

let di: syn::DeriveInput = 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()
);

Important traits for Vec<u8>

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 = 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(),
    &[&(syn::Ident::new("T", proc_macro2::Span::call_site()))]
);

Trait Implementations

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

Formats the value using the given formatter. Read more

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

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

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

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

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

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

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

Write self to the given TokenStream. Read more

Convert self directly into a TokenStream object. Read more

Auto Trait Implementations

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

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

Blanket Implementations

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

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> From for T
[src]

Performs the conversion.

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

Performs the conversion.

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

Important traits for &'a mut R

Immutably borrows from an owned value. Read more

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

Important traits for &'a mut R

Mutably borrows from an owned value. Read more

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

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more

impl<E> SpecializationError for E
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S is the encoder/decoder state type, T is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more

impl<T> Erased for T
[src]

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

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

impl<T> Erased for T
[src]

impl<T> Spanned for T where
    T: ToTokens
[src]

Returns a Span covering the complete contents of this syntax tree node, or [Span::call_site()] if this node is empty. Read more