Enum rustc::ty::wf::Elaborate [−][src]
enum Elaborate {
All,
None,
}🔬 This is a nightly-only experimental API. (rustc_private)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?
Controls whether we "elaborate" supertraits and so forth on the WF predicates. This is a kind of hack to address #43784. The underlying problem in that issue was a trait structure like:
trait Foo: Copy { } trait Bar: Foo { } impl<T: Bar> Foo for T { } impl<T> Bar for T { }
Here, in the Foo impl, we will check that T: Copy holds -- but
we decide that this is true because T: Bar is in the
where-clauses (and we can elaborate that to include T: Copy). This wouldn't be a problem, except that when we check the
Bar impl, we decide that T: Foo must hold because of the Foo
impl. And so nowhere did we check that T: Copy holds!
To resolve this, we elaborate the WF requirements that must be
proven when checking impls. This means that (e.g.) the impl Bar for T will be forced to prove not only that T: Foo but also T: Copy (which it won't be able to do, because there is no Copy
impl for T).
Variants
All🔬 This is a nightly-only experimental API. (rustc_private)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?
None🔬 This is a nightly-only experimental API. (rustc_private)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?
Trait Implementations
impl Debug for Elaborate[src]
impl Debug for Elaboratefn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl PartialEq for Elaborate[src]
impl PartialEq for Elaboratefn eq(&self, other: &Elaborate) -> bool[src]
fn eq(&self, other: &Elaborate) -> boolThis method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Rhs) -> bool1.0.0[src]
fn ne(&self, other: &Rhs) -> boolThis method tests for !=.
impl Eq for Elaborate[src]
impl Eq for Elaboratefn assert_receiver_is_total_eq(&self)[src]
fn assert_receiver_is_total_eq(&self)impl Copy for Elaborate[src]
impl Copy for Elaborateimpl Clone for Elaborate[src]
impl Clone for Elaborate