[−][src]Struct synstructure::BindingInfo
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]
impl<'a> BindingInfo<'a>pub fn ast(&self) -> &'a Field[src]
pub fn ast(&self) -> &'a FieldReturns a reference to the underlying syn AST node which this
BindingInfo references
pub fn pat(&self) -> TokenStream[src]
pub fn pat(&self) -> TokenStreamGenerates 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() );
pub fn referenced_ty_params(&self) -> Vec<&'a Ident>[src]
pub fn referenced_ty_params(&self) -> Vec<&'a Ident>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> Clone for BindingInfo<'a>[src]
impl<'a> Clone for BindingInfo<'a>fn clone(&self) -> BindingInfo<'a>[src]
fn clone(&self) -> BindingInfo<'a>Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl<'a> Eq for BindingInfo<'a>[src]
impl<'a> Eq for BindingInfo<'a>impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>[src]
impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>fn eq(&self, other: &BindingInfo<'a>) -> bool[src]
fn eq(&self, other: &BindingInfo<'a>) -> boolThis method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &BindingInfo<'a>) -> bool[src]
fn ne(&self, other: &BindingInfo<'a>) -> boolThis method tests for !=.
impl<'a> Hash for BindingInfo<'a>[src]
impl<'a> Hash for BindingInfo<'a>fn hash<__H: Hasher>(&self, state: &mut __H)[src]
fn hash<__H: Hasher>(&self, state: &mut __H)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]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, Feeds a slice of this type into the given [Hasher]. Read more
impl<'a> Debug for BindingInfo<'a>[src]
impl<'a> Debug for BindingInfo<'a>fn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl<'a> ToTokens for BindingInfo<'a>[src]
impl<'a> ToTokens for BindingInfo<'a>fn to_tokens(&self, tokens: &mut TokenStream)[src]
fn to_tokens(&self, tokens: &mut TokenStream)Write self to the given TokenStream. Read more
fn into_token_stream(self) -> TokenStream[src]
fn into_token_stream(self) -> TokenStreamConvert self directly into a TokenStream object. Read more
Auto Trait Implementations
impl<'a> !Send for BindingInfo<'a>
impl<'a> !Send for BindingInfo<'a>impl<'a> !Sync for BindingInfo<'a>
impl<'a> !Sync for BindingInfo<'a>Blanket Implementations
impl<T> From for T[src]
impl<T> From for Timpl<T, U> Into for T where
U: From<T>, [src]
impl<T, U> Into for T where
U: From<T>, impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, type Owned = T
fn to_owned(&self) -> T[src]
fn to_owned(&self) -> TCreates owned data from borrowed data, usually by cloning. Read more
fn clone_into(&self, target: &mut T)[src]
fn clone_into(&self, target: &mut T)🔬 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, U> TryFrom for T where
T: From<U>, [src]
impl<T, U> TryFrom for T where
T: From<U>, type Error = !
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>try_from)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized, [src]
impl<T> Borrow for T where
T: ?Sized, impl<T> Any for T where
T: 'static + ?Sized, [src]
impl<T> Any for T where
T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src]
fn get_type_id(&self) -> TypeId🔬 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<T> BorrowMut for T where
T: ?Sized, [src]
impl<T> BorrowMut for T where
T: ?Sized, fn borrow_mut(&mut self) -> &mut T[src]
fn borrow_mut(&mut self) -> &mut TMutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
impl<T, U> TryInto for T where
U: TryFrom<T>, type Error = <U as TryFrom<T>>::Error
try_from)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>try_from)Performs the conversion.
impl<E> SpecializationError for E[src]
impl<E> SpecializationError for Efn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized, [src]
fn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized, 🔬 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> Erased for Timpl<T> Send for T where
T: ?Sized, [src]
impl<T> Send for T where
T: ?Sized, impl<T> Sync for T where
T: ?Sized, [src]
impl<T> Sync for T where
T: ?Sized, impl<T> Erased for T
impl<T> Erased for Timpl<T> Spanned for T where
T: ToTokens, [src]
impl<T> Spanned for T where
T: ToTokens,