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

🔬 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?

🔬 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]

Formats the value using the given formatter. Read more

impl PartialEq for Elaborate
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for Elaborate
[src]

impl Copy for Elaborate
[src]

impl Clone for Elaborate
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl Send for Elaborate

impl Sync for Elaborate