pub enum InferenceId {
LookupItemDeclaration(LookupItemId),
LookupItemGenerics(LookupItemId),
LookupItemDefinition(LookupItemId),
ImplDefTrait(ImplDefId),
ImplAliasImplDef(ImplAliasId),
GenericParam(GenericParamId),
GenericImplParamTrait(GenericParamId),
Canonical,
NoContext,
}
Expand description
An id for an inference context. Each inference variable is associated with an inference id.
Variants§
LookupItemDeclaration(LookupItemId)
LookupItemGenerics(LookupItemId)
LookupItemDefinition(LookupItemId)
ImplDefTrait(ImplDefId)
ImplAliasImplDef(ImplAliasId)
GenericParam(GenericParamId)
GenericImplParamTrait(GenericParamId)
Canonical
NoContext
For resolving that will not be used anywhere in the semantic model.
Trait Implementations§
source§impl Clone for InferenceId
impl Clone for InferenceId
source§fn clone(&self) -> InferenceId
fn clone(&self) -> InferenceId
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for InferenceId
impl Debug for InferenceId
source§impl<'a, T: ?Sized + Upcast<dyn SemanticGroup + 'static>> DebugWithDb<T> for InferenceId
impl<'a, T: ?Sized + Upcast<dyn SemanticGroup + 'static>> DebugWithDb<T> for InferenceId
source§impl Hash for InferenceId
impl Hash for InferenceId
source§impl PartialEq for InferenceId
impl PartialEq for InferenceId
source§impl<T: SemanticRewriter<LookupItemId, Error> + SemanticRewriter<ImplDefId, Error> + SemanticRewriter<ImplAliasId, Error> + SemanticRewriter<GenericParamId, Error>, Error> SemanticObject<T, Error> for InferenceId
impl<T: SemanticRewriter<LookupItemId, Error> + SemanticRewriter<ImplDefId, Error> + SemanticRewriter<ImplAliasId, Error> + SemanticRewriter<GenericParamId, Error>, Error> SemanticObject<T, Error> for InferenceId
fn default_rewrite(&mut self, rewriter: &mut T) -> Result<RewriteResult, Error>
source§impl<'a> SemanticRewriter<InferenceId, DiagnosticAdded> for SubstitutionRewriter<'a>
impl<'a> SemanticRewriter<InferenceId, DiagnosticAdded> for SubstitutionRewriter<'a>
fn internal_rewrite( &mut self, _value: &mut InferenceId, ) -> Result<RewriteResult, DiagnosticAdded>
fn rewrite(&mut self, value: T) -> Result<T, Error>
source§impl<'a> SemanticRewriter<InferenceId, NoError> for Inference<'a>
impl<'a> SemanticRewriter<InferenceId, NoError> for Inference<'a>
fn internal_rewrite( &mut self, _value: &mut InferenceId, ) -> Result<RewriteResult, NoError>
fn rewrite(&mut self, value: T) -> Result<T, Error>
impl Copy for InferenceId
impl Eq for InferenceId
impl StructuralPartialEq for InferenceId
Auto Trait Implementations§
impl Freeze for InferenceId
impl RefUnwindSafe for InferenceId
impl Send for InferenceId
impl Sync for InferenceId
impl Unpin for InferenceId
impl UnwindSafe for InferenceId
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.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<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