pub enum ImplRestrictionKind {
Unrestricted,
Restricted(DefId, Span),
}Expand description
Whether the trait implementation is unrestricted or restricted within a specific module.
Variants§
Unrestricted
The restriction does not affect this trait, and it can be implemented anywhere.
Restricted(DefId, Span)
This trait can only be implemented within the specified module.
Implementations§
Source§impl ImplRestrictionKind
impl ImplRestrictionKind
Sourcepub fn is_allowed_in(self, module: DefId, tcx: TyCtxt<'_>) -> bool
pub fn is_allowed_in(self, module: DefId, tcx: TyCtxt<'_>) -> bool
Returns true if the behavior is allowed/unrestricted in the given module.
A value of false indicates that the behavior is prohibited.
Sourcepub fn expect_span(self) -> Span
pub fn expect_span(self) -> Span
Obtain the Span of the restriction. Panics if the restriction is unrestricted.
Sourcepub fn restriction_path(self, tcx: TyCtxt<'_>) -> String
pub fn restriction_path(self, tcx: TyCtxt<'_>) -> String
Obtain the path of the restriction. If unrestricted, an empty string is returned.
Trait Implementations§
Source§impl Clone for ImplRestrictionKind
impl Clone for ImplRestrictionKind
Source§fn clone(&self) -> ImplRestrictionKind
fn clone(&self) -> ImplRestrictionKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<__D: SpanDecoder> Decodable<__D> for ImplRestrictionKind
impl<__D: SpanDecoder> Decodable<__D> for ImplRestrictionKind
Source§impl<__E: SpanEncoder> Encodable<__E> for ImplRestrictionKind
impl<__E: SpanEncoder> Encodable<__E> for ImplRestrictionKind
Source§impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for ImplRestrictionKind
impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for ImplRestrictionKind
fn hash_stable( &self, __hcx: &mut StableHashingContext<'__ctx>, __hasher: &mut StableHasher, )
Source§impl PartialEq for ImplRestrictionKind
impl PartialEq for ImplRestrictionKind
impl Copy for ImplRestrictionKind
impl StructuralPartialEq for ImplRestrictionKind
Auto Trait Implementations§
impl DynSend for ImplRestrictionKind
impl DynSync for ImplRestrictionKind
impl Freeze for ImplRestrictionKind
impl RefUnwindSafe for ImplRestrictionKind
impl Send for ImplRestrictionKind
impl Sync for ImplRestrictionKind
impl Unpin for ImplRestrictionKind
impl UnsafeUnpin for ImplRestrictionKind
impl UnwindSafe for ImplRestrictionKind
Blanket Implementations§
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
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>
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>
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 moreSource§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.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<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> 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<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: 16 bytes
Size for each variant:
Unrestricted: 0 bytesRestricted: 16 bytes