Struct synstructure::BindingInfo
source · [−]Expand description
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
sourceimpl<'a> BindingInfo<'a>
impl<'a> BindingInfo<'a>
sourcepub fn ast(&self) -> &'a Field
pub fn ast(&self) -> &'a Field
Returns a reference to the underlying syn
AST node which this
BindingInfo
references
sourcepub fn pat(&self) -> TokenStream
pub fn pat(&self) -> TokenStream
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()
);
sourcepub fn referenced_ty_params(&self) -> Vec<&'a Ident>
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 = 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(),
&["e::format_ident!("T")]
);
Trait Implementations
sourceimpl<'a> Clone for BindingInfo<'a>
impl<'a> Clone for BindingInfo<'a>
sourcefn clone(&self) -> BindingInfo<'a>
fn clone(&self) -> BindingInfo<'a>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'a> Debug for BindingInfo<'a>
impl<'a> Debug for BindingInfo<'a>
sourceimpl<'a> Hash for BindingInfo<'a>
impl<'a> Hash for BindingInfo<'a>
sourceimpl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>
impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>
sourcefn eq(&self, other: &BindingInfo<'a>) -> bool
fn eq(&self, other: &BindingInfo<'a>) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &BindingInfo<'a>) -> bool
fn ne(&self, other: &BindingInfo<'a>) -> bool
This method tests for !=
.
sourceimpl<'a> ToTokens for BindingInfo<'a>
impl<'a> ToTokens for BindingInfo<'a>
sourcefn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Write self
to the given TokenStream
. Read more
sourcefn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Convert self
directly into a TokenStream
object. Read more
sourcefn into_token_stream(self) -> TokenStream
fn into_token_stream(self) -> TokenStream
Convert self
directly into a TokenStream
object. Read more
impl<'a> Eq for BindingInfo<'a>
impl<'a> StructuralEq for BindingInfo<'a>
impl<'a> StructuralPartialEq for BindingInfo<'a>
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Spanned for T where
T: Spanned + ?Sized,
impl<T> Spanned for T where
T: Spanned + ?Sized,
sourcepub fn span(&self) -> Span
pub fn span(&self) -> Span
Returns a Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more