error[E0308]: mismatched types --> $DIR/restrict-existing-type-bounds.rs:13:12 | LL | impl TryAdd for Option { | - this type parameter ... LL | Ok(self) | -- ^^^^ expected `Option<::Output>`, found `Option` | | | arguments to this enum variant are incorrect | = note: expected enum `Option<::Output>` found enum `Option` help: the type constructed contains `Option` due to the type of the argument passed --> $DIR/restrict-existing-type-bounds.rs:13:9 | LL | Ok(self) | ^^^----^ | | | this argument influences the type of `Ok` note: tuple variant defined here --> $SRC_DIR/core/src/result.rs:LL:COL help: consider further restricting this bound | LL | impl> TryAdd for Option { | ++++++++++++ error[E0308]: mismatched types --> $DIR/restrict-existing-type-bounds.rs:26:12 | LL | impl> TryAdd for Other { | - this type parameter ... LL | Ok(self) | -- ^^^^ expected `Other<::Output>`, found `Other` | | | arguments to this enum variant are incorrect | = note: expected struct `Other<::Output>` found struct `Other` help: the type constructed contains `Other` due to the type of the argument passed --> $DIR/restrict-existing-type-bounds.rs:26:9 | LL | Ok(self) | ^^^----^ | | | this argument influences the type of `Ok` note: tuple variant defined here --> $SRC_DIR/core/src/result.rs:LL:COL help: consider further restricting this bound | LL | impl> TryAdd for Other { | ++++++++++++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`.