enum LifetimeRibKind {
    Item,
    Generics {
        binder: NodeId,
        span: Span,
        kind: LifetimeBinderKind,
    },
    ConstGeneric,
    AnonConst,
    AnonymousCreateParameter {
        binder: NodeId,
        report_in_path: bool,
    },
    AnonymousReportError,
    Elided(LifetimeRes),
    ElisionFailure,
}

Variants

Item

This rib acts as a barrier to forbid reference to lifetimes of a parent item.

Generics

Fields

binder: NodeId
span: Span

This rib declares generic parameters.

ConstGeneric

FIXME(const_generics): This patches over an ICE caused by non-’static lifetimes in const generics. We are disallowing this until we can decide on how we want to handle non-’static lifetimes in const generics. See issue #74052 for discussion.

AnonConst

Non-static lifetimes are prohibited in anonymous constants under min_const_generics. This function will emit an error if generic_const_exprs is not enabled, the body identified by body_id is an anonymous constant and lifetime_ref is non-static.

AnonymousCreateParameter

Fields

binder: NodeId
report_in_path: bool

Create a new anonymous lifetime parameter and reference it.

If report_in_path, report an error when encountering lifetime elision in a path:

struct Foo<'a> { x: &'a () }
async fn foo(x: Foo) {}

Note: the error should not trigger when the elided lifetime is in a pattern or expression-position path:

struct Foo<'a> { x: &'a () }
async fn foo(Foo { x: _ }: Foo<'_>) {}

AnonymousReportError

Give a hard error when either & or '_ is written. Used to rule out things like where T: Foo<'_>. Does not imply an error on default object bounds (e.g., Box<dyn Foo>).

Elided(LifetimeRes)

Replace all anonymous lifetimes by provided lifetime.

ElisionFailure

Signal we cannot find which should be the anonymous lifetime.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.

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: 16 bytes

Size for each variant:

  • Item: 0 bytes
  • Generics: 15 bytes
  • ConstGeneric: 0 bytes
  • AnonConst: 0 bytes
  • AnonymousCreateParameter: 7 bytes
  • AnonymousReportError: 0 bytes
  • Elided: 15 bytes
  • ElisionFailure: 0 bytes