Enum rustc_trait_selection::traits::solve::GoalSource
source · pub enum GoalSource {
Misc,
ImplWhereBound,
}Expand description
Why a specific goal has to be proven.
This is necessary as we treat nested goals different depending on their source.
Variants§
Misc
ImplWhereBound
We’re proving a where-bound of an impl.
FIXME(-Znext-solver=coinductive): Explain how and why this changes whether cycles are coinductive.
This also impacts whether we erase constraints on overflow.
Erasing constraints is generally very useful for perf and also
results in better error messages by avoiding spurious errors.
We do not erase overflow constraints in normalizes-to goals unless
they are from an impl where-clause. This is necessary due to
backwards compatability, cc trait-system-refactor-initiatitive#70.
Auto Trait Implementations§
impl RefUnwindSafe for GoalSource
impl Send for GoalSource
impl Sync for GoalSource
impl Unpin for GoalSource
impl UnwindSafe for GoalSource
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
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: 1 byte
Size for each variant:
Misc: 0 bytesImplWhereBound: 0 bytes