# Struct synstructure::BindingInfo [−] [src]

    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.

## Methods

### `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) -> Tokens`
[src]

Generates the pattern fragment for this field binding.

# Example

    let di = syn::parse_derive_input(r#"
        enum A {
            B{ a: i32, b: i32 },
            C(u32),
        }
    "#).unwrap();
    let s = Structure::new(&di);

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

#### `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::parse_derive_input(r#"
        struct A<T, U> {
            a: Option<T>,
            b: U,
        }
    "#).unwrap();
    let mut s = Structure::new(&di);

    assert_eq!(
        s.variants()[0].bindings()[0].referenced_ty_params(),
        &[&(syn::Ident::from("T"))]
    );

## Trait Implementations

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

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result`
[src]

Formats the value using the given formatter. Read more

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

#### `fn clone(&self) -> BindingInfo<'a>`
[src]

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`
1.0.0
[src]

Performs copy-assignment from `source`. Read more

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

#### `fn eq(&self, __arg_0: &BindingInfo<'a>) -> bool`
[src]

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

#### `fn ne(&self, __arg_0: &BindingInfo<'a>) -> bool`
[src]

This method tests for `!=`.

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

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

#### `fn hash<__H: Hasher>(&self, __arg_0: &mut __H)`
[src]

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

#### `fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,`
1.3.0
[src]

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

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

#### `fn to_tokens(&self, tokens: &mut Tokens)`
[src]

Write `self` to the given `Tokens`. Read more

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)