struct Context<'db> {
db: &'db dyn HirDatabase,
generics: Generics<'db>,
variances: Box<[Variance]>,
}Fields§
§db: &'db dyn HirDatabase§generics: Generics<'db>§variances: Box<[Variance]>Implementations§
Source§impl<'db> Context<'db>
impl<'db> Context<'db>
fn solve(self) -> Box<[Variance]>
Sourcefn add_constraints_from_ty(&mut self, ty: Ty<'db>, variance: Variance)
fn add_constraints_from_ty(&mut self, ty: Ty<'db>, variance: Variance)
Adds constraints appropriate for an instance of ty appearing
in a context with the generics defined in generics and
ambient variance variance
fn add_constraints_from_pat(&mut self, pat: Pattern<'db>)
fn add_constraints_from_invariant_args(&mut self, args: GenericArgs<'db>)
Sourcefn add_constraints_from_args(
&mut self,
def_id: GenericDefId,
args: GenericArgs<'db>,
variance: Variance,
)
fn add_constraints_from_args( &mut self, def_id: GenericDefId, args: GenericArgs<'db>, variance: Variance, )
Adds constraints appropriate for a nominal type (enum, struct,
object, etc) appearing in a context with ambient variance variance
Sourcefn add_constraints_from_const(&mut self, c: Const<'db>)
fn add_constraints_from_const(&mut self, c: Const<'db>)
Adds constraints appropriate for a const expression val
in a context with ambient variance variance
Sourcefn add_constraints_from_sig(
&mut self,
sig_tys: impl DoubleEndedIterator<Item = Ty<'db>>,
variance: Variance,
)
fn add_constraints_from_sig( &mut self, sig_tys: impl DoubleEndedIterator<Item = Ty<'db>>, variance: Variance, )
Adds constraints appropriate for a function with signature
sig appearing in a context with ambient variance variance
Sourcefn add_constraints_from_region(
&mut self,
region: Region<'db>,
variance: Variance,
)
fn add_constraints_from_region( &mut self, region: Region<'db>, variance: Variance, )
Adds constraints appropriate for a region appearing in a
context with ambient variance variance
Sourcefn add_constraints_from_mt(
&mut self,
ty: Ty<'db>,
mt: Mutability,
variance: Variance,
)
fn add_constraints_from_mt( &mut self, ty: Ty<'db>, mt: Mutability, variance: Variance, )
Adds constraints appropriate for a mutability-type pair
appearing in a context with ambient variance variance
fn constrain(&mut self, index: usize, variance: Variance)
Auto Trait Implementations§
impl<'db> Freeze for Context<'db>
impl<'db> !RefUnwindSafe for Context<'db>
impl<'db> !Send for Context<'db>
impl<'db> !Sync for Context<'db>
impl<'db> Unpin for Context<'db>
impl<'db> UnsafeUnpin for Context<'db>
impl<'db> !UnwindSafe for Context<'db>
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
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more