Skip to main content

GenericClauses

Struct GenericClauses 

Source
pub struct GenericClauses<'tcx> {
    pub parent: Option<DefId>,
    pub clauses: &'tcx [(Clause<'tcx>, Span)],
}
Expand description

Bounds on generics.

Fields§

§parent: Option<DefId>§clauses: &'tcx [(Clause<'tcx>, Span)]

Implementations§

Source§

impl<'tcx> GenericClauses<'tcx>

Source

pub fn instantiate( self, tcx: TyCtxt<'tcx>, args: GenericArgsRef<'tcx>, ) -> InstantiatedClauses<'tcx>

Source

pub fn instantiate_own( self, tcx: TyCtxt<'tcx>, args: GenericArgsRef<'tcx>, ) -> impl Iterator<Item = (Unnormalized<'tcx, Clause<'tcx>>, Span)> + DoubleEndedIterator + ExactSizeIterator + Clone

Source

pub fn instantiate_own_identity( self, ) -> impl Iterator<Item = (Unnormalized<'tcx, Clause<'tcx>>, Span)> + DoubleEndedIterator + ExactSizeIterator + Clone

Source

fn instantiate_into( self, tcx: TyCtxt<'tcx>, instantiated: &mut InstantiatedClauses<'tcx>, args: GenericArgsRef<'tcx>, )

Source

pub fn instantiate_identity( self, tcx: TyCtxt<'tcx>, ) -> InstantiatedClauses<'tcx>

Source

fn instantiate_identity_into( self, tcx: TyCtxt<'tcx>, instantiated: &mut InstantiatedClauses<'tcx>, )

Source

pub fn is_fully_generic_for_reflection(self) -> bool

Allow simple where bounds like T: Debug, but prevent any kind of outlives bounds or uses of generic parameters on the right hand side.

We allow simple bounds because when the T actually gets substituted with a concrete type during monomorphization, we will be checking its Debug impl for fully_generic_for_reflection.

Constants (associated or generic) are irrelevant for this analysis, as their value is neither affected by lifetimes, nor do they affect lifetimes.

Trait Implementations§

Source§

impl<'tcx> Clone for GenericClauses<'tcx>

Source§

fn clone(&self) -> GenericClauses<'tcx>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'tcx> Copy for GenericClauses<'tcx>

Source§

impl<'tcx> Debug for GenericClauses<'tcx>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for GenericClauses<'tcx>

Source§

fn decode(__decoder: &mut __D) -> Self

Source§

impl<'tcx> Default for GenericClauses<'tcx>

Source§

fn default() -> GenericClauses<'tcx>

Returns the “default value” for a type. Read more
Source§

impl<'tcx, __E: TyEncoder<'tcx>> Encodable<__E> for GenericClauses<'tcx>

Source§

fn encode(&self, __encoder: &mut __E)

Source§

impl Erasable for GenericClauses<'_>

Source§

type Storage = [u8; 24]

Storage type to used for erased values of this type. Should be [u8; N], where N is equal to size_of::<Self>. Read more
Source§

impl<'tcx> StableHash for GenericClauses<'tcx>

Source§

fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )

Auto Trait Implementations§

§

impl<'tcx> !RefUnwindSafe for GenericClauses<'tcx>

§

impl<'tcx> !UnwindSafe for GenericClauses<'tcx>

§

impl<'tcx> DynSend for GenericClauses<'tcx>

§

impl<'tcx> DynSync for GenericClauses<'tcx>

§

impl<'tcx> Freeze for GenericClauses<'tcx>

§

impl<'tcx> Send for GenericClauses<'tcx>

§

impl<'tcx> Sync for GenericClauses<'tcx>

§

impl<'tcx> Unpin for GenericClauses<'tcx>

§

impl<'tcx> UnsafeUnpin for GenericClauses<'tcx>

Blanket Implementations§

Source§

impl<T> Aligned for T

Source§

const ALIGN: Alignment

Alignment of Self.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

Source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T

Source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]

Source§

impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

Source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T

Source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, R> CollectAndApply<T, R> for T

Source§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

Source§

type Output = R

Source§

impl<'tcx, T> DepNodeKey<'tcx> for T
where T: StableHash + Debug,

Source§

default fn key_fingerprint_style() -> KeyFingerprintStyle

Source§

default fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint

This method turns a query key into an opaque Fingerprint to be used in DepNode.
Source§

default fn try_recover_key(_: TyCtxt<'tcx>, _: &DepNode) -> Option<T>

This method tries to recover the query key from the given DepNode, something which is needed when forcing DepNodes during red-green evaluation. The query system will only call this method if fingerprint_style() is not FingerprintStyle::Opaque. It is always valid to return None here, in which case incremental compilation will treat the query as having changed instead of forcing it.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<K> IntoQueryKey<K> for K

Source§

fn into_query_key(self) -> K

Argument conversion from Self to K. This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.
Source§

impl<T> MaybeResult<T> for T

Source§

type Error = !

Source§

fn from(_: Result<T, <T as MaybeResult<T>>::Error>) -> T

Source§

fn to_result(self) -> Result<T, <T as MaybeResult<T>>::Error>

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<I, T, U> Upcast<I, U> for T
where U: UpcastFrom<I, T>,

Source§

fn upcast(self, interner: I) -> U

Source§

impl<I, T> UpcastFrom<I, T> for T

Source§

fn upcast_from(from: T, _tcx: I) -> T

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

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