Struct rustc_borrowck::region_infer::opaque_types::LazyOpaqueTyEnv
source · struct LazyOpaqueTyEnv<'tcx> {
tcx: TyCtxt<'tcx>,
def_id: LocalDefId,
canonical_args: OnceCell<GenericArgsRef<'tcx>>,
}
Expand description
Computes if an opaque type requires a lifetime parameter to be equal to
another one or to the 'static
lifetime.
These requirements are derived from the explicit and implied bounds.
Fields§
§tcx: TyCtxt<'tcx>
§def_id: LocalDefId
§canonical_args: OnceCell<GenericArgsRef<'tcx>>
Equal parameters will have the same name. Computed Lazily.
Example:
type Opaque<'a: 'static, 'b: 'c, 'c: 'b> = impl Sized;
Identity args: ['a, 'b, 'c]
Canonical args: ['static, 'b, 'b]
Implementations§
source§impl<'tcx> LazyOpaqueTyEnv<'tcx>
impl<'tcx> LazyOpaqueTyEnv<'tcx>
pub fn new(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> Self
pub fn param_equal_static(&self, param_index: usize) -> bool
pub fn params_equal(&self, param1: usize, param2: usize) -> bool
pub fn param_is_error(&self, param_index: usize) -> Result<(), ErrorGuaranteed>
fn get_canonical_args(&self) -> GenericArgsRef<'tcx>
Auto Trait Implementations§
impl<'tcx> DynSend for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !DynSync for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !Freeze for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !RefUnwindSafe for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !Send for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !Sync for LazyOpaqueTyEnv<'tcx>
impl<'tcx> Unpin for LazyOpaqueTyEnv<'tcx>
impl<'tcx> !UnwindSafe for LazyOpaqueTyEnv<'tcx>
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
Mutably borrows from an owned value. Read more
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Creates a filterable data provider with the given name for debugging. Read more
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
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: 24 bytes