Struct TraitImpls
pub struct TraitImpls<'db> {
map: HashMap<TraitId, OneTraitImpls<'db>, FxBuildHasher>,
}Fields§
§map: HashMap<TraitId, OneTraitImpls<'db>, FxBuildHasher>Implementations§
§impl<'db> TraitImpls<'db>
impl<'db> TraitImpls<'db>
pub fn for_crate( db: &'db (dyn HirDatabase + 'static), krate: Crate, ) -> &'db Arc<TraitImpls<'db>>
pub fn for_block( db: &'db (dyn HirDatabase + 'static), block: BlockIdLt<'db>, ) -> <Option<Box<TraitImpls<'db>>> as SalsaAsDeref>::AsDeref<'db>
pub fn for_crate_and_deps( db: &'db (dyn HirDatabase + 'static), krate: Crate, ) -> &'db <Box<[Arc<TraitImpls<'db>>]> as Deref>::Target
§impl<'db> TraitImpls<'db>
impl<'db> TraitImpls<'db>
pub fn blanket_impls(&self, for_trait: TraitId) -> &[ImplId]
pub fn has_impls_for_trait_and_self_ty(
&self,
trait_: TraitId,
self_ty: &SimplifiedType<SolverDefId<'db>>,
) -> bool
pub fn has_impls_for_trait_and_self_ty( &self, trait_: TraitId, self_ty: &SimplifiedType<SolverDefId<'db>>, ) -> bool
Queries whether self_ty has potentially applicable implementations of trait_.
pub fn for_trait_and_self_ty( &'db self, trait_: TraitId, self_ty: &SimplifiedType<SolverDefId<'db>>, ) -> (&'db [ImplId], &'db [BuiltinDeriveImplId])
pub fn for_trait( &self, trait_: TraitId, callback: impl FnMut(Either<&[ImplId], &[BuiltinDeriveImplId]>), )
pub fn for_self_ty( &self, self_ty: &SimplifiedType<SolverDefId<'db>>, callback: impl FnMut(Either<&[ImplId], &[BuiltinDeriveImplId]>), )
pub fn for_each_crate_and_block( db: &'db (dyn HirDatabase + 'static), krate: Crate, block: Option<BlockIdLt<'db>>, for_each: &mut dyn FnMut(&TraitImpls<'db>), )
pub fn for_each_crate_and_block_trait_and_type(
db: &'db (dyn HirDatabase + 'static),
krate: Crate,
type_block: Option<BlockIdLt<'db>>,
trait_block: Option<BlockIdLt<'db>>,
for_each: &mut dyn FnMut(&TraitImpls<'db>),
)
pub fn for_each_crate_and_block_trait_and_type( db: &'db (dyn HirDatabase + 'static), krate: Crate, type_block: Option<BlockIdLt<'db>>, trait_block: Option<BlockIdLt<'db>>, for_each: &mut dyn FnMut(&TraitImpls<'db>), )
Like Self::for_each_crate_and_block(), but takes in account two blocks, one for a trait and one for a self type.
Trait Implementations§
§impl<'db> Debug for TraitImpls<'db>
impl<'db> Debug for TraitImpls<'db>
§impl<'db> PartialEq for TraitImpls<'db>
impl<'db> PartialEq for TraitImpls<'db>
§impl<'db> Update for TraitImpls<'db>
impl<'db> Update for TraitImpls<'db>
§unsafe fn maybe_update(
old_pointer_: *mut TraitImpls<'db>,
new_value_: TraitImpls<'db>,
) -> bool
unsafe fn maybe_update( old_pointer_: *mut TraitImpls<'db>, new_value_: TraitImpls<'db>, ) -> bool
Returns Read more
impl<'db> StructuralPartialEq for TraitImpls<'db>
Auto Trait Implementations§
impl<'db> Freeze for TraitImpls<'db>
impl<'db> RefUnwindSafe for TraitImpls<'db>
impl<'db> Send for TraitImpls<'db>
impl<'db> Sync for TraitImpls<'db>
impl<'db> Unpin for TraitImpls<'db>
impl<'db> UnsafeUnpin for TraitImpls<'db>
impl<'db> UnwindSafe for TraitImpls<'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