pub struct Generics {
pub lt_token: Option<Lt>,
pub params: Punctuated<GenericParam, Comma>,
pub gt_token: Option<Gt>,
pub where_clause: Option<WhereClause>,
}
Expand description
Lifetimes and type parameters attached to a declaration of a function, enum, trait, etc.
This struct represents two distinct optional syntactic elements, generic parameters and where clause. In some locations of the grammar, there may be other tokens in between these two things.
Fields§
§lt_token: Option<Lt>
§params: Punctuated<GenericParam, Comma>
§gt_token: Option<Gt>
§where_clause: Option<WhereClause>
Implementations§
source§impl Generics
impl Generics
sourcepub fn lifetimes(&self) -> Lifetimes<'_>
pub fn lifetimes(&self) -> Lifetimes<'_>
Returns an
Iterator<Item = &
LifetimeParam
>
over the lifetime parameters in self.params
.
sourcepub fn lifetimes_mut(&mut self) -> LifetimesMut<'_>
pub fn lifetimes_mut(&mut self) -> LifetimesMut<'_>
Returns an
Iterator<Item = &mut
LifetimeParam
>
over the lifetime parameters in self.params
.
sourcepub fn type_params(&self) -> TypeParams<'_>
pub fn type_params(&self) -> TypeParams<'_>
Returns an
Iterator<Item = &
TypeParam
>
over the type parameters in self.params
.
sourcepub fn type_params_mut(&mut self) -> TypeParamsMut<'_>
pub fn type_params_mut(&mut self) -> TypeParamsMut<'_>
Returns an
Iterator<Item = &mut
TypeParam
>
over the type parameters in self.params
.
sourcepub fn const_params(&self) -> ConstParams<'_>
pub fn const_params(&self) -> ConstParams<'_>
Returns an
Iterator<Item = &
ConstParam
>
over the constant parameters in self.params
.
sourcepub fn const_params_mut(&mut self) -> ConstParamsMut<'_>
pub fn const_params_mut(&mut self) -> ConstParamsMut<'_>
Returns an
Iterator<Item = &mut
ConstParam
>
over the constant parameters in self.params
.
sourcepub fn make_where_clause(&mut self) -> &mut WhereClause
pub fn make_where_clause(&mut self) -> &mut WhereClause
Initializes an empty where
-clause if there is not one present already.
source§impl Generics
impl Generics
sourcepub fn split_for_impl(
&self,
) -> (ImplGenerics<'_>, TypeGenerics<'_>, Option<&WhereClause>)
pub fn split_for_impl( &self, ) -> (ImplGenerics<'_>, TypeGenerics<'_>, Option<&WhereClause>)
Split a type’s generics into the pieces required for impl’ing a trait for that type.
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
quote! {
impl #impl_generics MyTrait for #name #ty_generics #where_clause {
// ...
}
}
Trait Implementations§
source§impl ToTokens for Generics
impl ToTokens for Generics
source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
Auto Trait Implementations§
impl Freeze for Generics
impl RefUnwindSafe for Generics
impl !Send for Generics
impl !Sync for Generics
impl Unpin for Generics
impl UnwindSafe for Generics
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Spanned for Twhere
T: Spanned + ?Sized,
impl<T> Spanned for Twhere
T: Spanned + ?Sized,
source§fn span(&self) -> Span
fn span(&self) -> Span
Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty.