pub struct Generics<'hir> {
pub params: &'hir [GenericParam<'hir>],
pub predicates: &'hir [WherePredicate<'hir>],
pub has_where_clause_predicates: bool,
pub where_clause_span: Span,
pub span: Span,
}
Expand description
Represents lifetimes and type parameters attached to a declaration of a function, enum, trait, etc.
Fields§
§params: &'hir [GenericParam<'hir>]
§predicates: &'hir [WherePredicate<'hir>]
§has_where_clause_predicates: bool
§where_clause_span: Span
§span: Span
Implementations§
source§impl<'hir> Generics<'hir>
impl<'hir> Generics<'hir>
pub const fn empty() -> &'hir Generics<'hir>
pub fn get_named(&self, name: Symbol) -> Option<&GenericParam<'hir>>
pub fn spans(&self) -> MultiSpan
sourcepub fn span_for_lifetime_suggestion(&self) -> Option<Span>
pub fn span_for_lifetime_suggestion(&self) -> Option<Span>
If there are generic parameters, return where to introduce a new one.
sourcepub fn span_for_param_suggestion(&self) -> Option<Span>
pub fn span_for_param_suggestion(&self) -> Option<Span>
If there are generic parameters, return where to introduce a new one.
sourcepub fn tail_span_for_predicate_suggestion(&self) -> Span
pub fn tail_span_for_predicate_suggestion(&self) -> Span
Span
where further predicates would be suggested, accounting for trailing commas, like
in fn foo<T>(t: T) where T: Foo,
so we don’t suggest two trailing commas.
pub fn add_where_or_trailing_comma(&self) -> &'static str
pub fn bounds_for_param( &self, param_def_id: LocalDefId ) -> impl Iterator<Item = &WhereBoundPredicate<'hir>>
pub fn outlives_for_param( &self, param_def_id: LocalDefId ) -> impl Iterator<Item = &WhereRegionPredicate<'_>>
pub fn bounds_span_for_suggestions( &self, param_def_id: LocalDefId ) -> Option<Span>
pub fn span_for_predicate_removal(&self, pos: usize) -> Span
pub fn span_for_bound_removal( &self, predicate_pos: usize, bound_pos: usize ) -> Span
Trait Implementations§
source§impl<'hir, __CTX> HashStable<__CTX> for Generics<'hir>where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for Generics<'hir>where __CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
impl<'hir> Copy for Generics<'hir>
Auto Trait Implementations§
impl<'hir> RefUnwindSafe for Generics<'hir>
impl<'hir> !Send for Generics<'hir>
impl<'hir> !Sync for Generics<'hir>
impl<'hir> Unpin for Generics<'hir>
impl<'hir> UnwindSafe for Generics<'hir>
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
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
Mutably borrows from an owned value. Read more
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 56 bytes