error: equality constraints are not yet supported in `where` clauses --> $DIR/missing-bounds.rs:37:33 | LL | impl Add for E where ::Output = B { | ^^^^^^^^^^^^^^^^^^^^^^ not supported | = note: see issue #20041 for more information help: if `Output` is an associated type you're trying to set, use the associated type binding syntax | LL | impl Add for E where B: Add { | ~~~~~~~~~~~~~~~~~~ error[E0308]: mismatched types --> $DIR/missing-bounds.rs:11:11 | LL | impl Add for A where B: Add { | - this type parameter ... LL | A(self.0 + rhs.0) | - ^^^^^^^^^^^^^^ expected type parameter `B`, found associated type | | | arguments to this struct are incorrect | = note: expected type parameter `B` found associated type `::Output` help: the type constructed contains `::Output` due to the type of the argument passed --> $DIR/missing-bounds.rs:11:9 | LL | A(self.0 + rhs.0) | ^^--------------^ | | | this argument influences the type of `A` note: tuple struct defined here --> $DIR/missing-bounds.rs:5:8 | LL | struct A(B); | ^ help: consider further restricting this bound | LL | impl Add for A where B: Add + Add { | +++++++++++++++++ error[E0308]: mismatched types --> $DIR/missing-bounds.rs:21:14 | LL | impl Add for C { | - this type parameter ... LL | Self(self.0 + rhs.0) | ---- ^^^^^^^^^^^^^^ expected type parameter `B`, found associated type | | | arguments to this function are incorrect | = note: expected type parameter `B` found associated type `::Output` note: tuple struct defined here --> $DIR/missing-bounds.rs:15:8 | LL | struct C(B); | ^ help: consider further restricting this bound | LL | impl> Add for C { | +++++++++++++++++ error[E0369]: cannot add `B` to `B` --> $DIR/missing-bounds.rs:31:21 | LL | Self(self.0 + rhs.0) | ------ ^ ----- B | | | B | help: consider restricting type parameter `B` | LL | impl> Add for D { | +++++++++++++++++++++++++++ error[E0308]: mismatched types --> $DIR/missing-bounds.rs:42:14 | LL | impl Add for E where ::Output = B { | - this type parameter ... LL | Self(self.0 + rhs.0) | ---- ^^^^^^^^^^^^^^ expected type parameter `B`, found associated type | | | arguments to this function are incorrect | = note: expected type parameter `B` found associated type `::Output` note: tuple struct defined here --> $DIR/missing-bounds.rs:35:8 | LL | struct E(B); | ^ help: consider further restricting this bound | LL | impl> Add for E where ::Output = B { | +++++++++++++++++ error: aborting due to 5 previous errors Some errors have detailed explanations: E0308, E0369. For more information about an error, try `rustc --explain E0308`.