error[E0599]: the method `insert` exists for struct `HashSet<Value>`, but its trait bounds were not satisfied
  --> $DIR/issue-91550.rs:8:8
   |
LL | struct Value(u32);
   | ------------ doesn't satisfy `Value: Eq` or `Value: Hash`
...
LL |     hs.insert(Value(0));
   |        ^^^^^^
   |
   = note: the following trait bounds were not satisfied:
           `Value: Eq`
           `Value: Hash`
help: consider annotating `Value` with `#[derive(Eq, Hash, PartialEq)]`
   |
LL + #[derive(Eq, Hash, PartialEq)]
LL | struct Value(u32);
   |

error[E0599]: the method `use_eq` exists for struct `Object<NoDerives>`, but its trait bounds were not satisfied
  --> $DIR/issue-91550.rs:26:9
   |
LL | pub struct NoDerives;
   | -------------------- doesn't satisfy `NoDerives: Eq`
LL |
LL | struct Object<T>(T);
   | ---------------- method `use_eq` not found for this struct
...
LL |     foo.use_eq();
   |         ^^^^^^ method cannot be called on `Object<NoDerives>` due to unsatisfied trait bounds
   |
note: trait bound `NoDerives: Eq` was not satisfied
  --> $DIR/issue-91550.rs:15:9
   |
LL | impl<T: Eq> Object<T> {
   |         ^^  ---------
   |         |
   |         unsatisfied trait bound introduced here
help: consider annotating `NoDerives` with `#[derive(Eq, PartialEq)]`
   |
LL + #[derive(Eq, PartialEq)]
LL | pub struct NoDerives;
   |

error[E0599]: the method `use_ord` exists for struct `Object<NoDerives>`, but its trait bounds were not satisfied
  --> $DIR/issue-91550.rs:27:9
   |
LL | pub struct NoDerives;
   | -------------------- doesn't satisfy `NoDerives: Ord`
LL |
LL | struct Object<T>(T);
   | ---------------- method `use_ord` not found for this struct
...
LL |     foo.use_ord();
   |         ^^^^^^^ method cannot be called on `Object<NoDerives>` due to unsatisfied trait bounds
   |
note: trait bound `NoDerives: Ord` was not satisfied
  --> $DIR/issue-91550.rs:18:9
   |
LL | impl<T: Ord> Object<T> {
   |         ^^^  ---------
   |         |
   |         unsatisfied trait bound introduced here
help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
   |
LL + #[derive(Eq, Ord, PartialEq, PartialOrd)]
LL | pub struct NoDerives;
   |

error[E0599]: the method `use_ord_and_partial_ord` exists for struct `Object<NoDerives>`, but its trait bounds were not satisfied
  --> $DIR/issue-91550.rs:28:9
   |
LL | pub struct NoDerives;
   | -------------------- doesn't satisfy `NoDerives: Ord` or `NoDerives: PartialOrd`
LL |
LL | struct Object<T>(T);
   | ---------------- method `use_ord_and_partial_ord` not found for this struct
...
LL |     foo.use_ord_and_partial_ord();
   |         ^^^^^^^^^^^^^^^^^^^^^^^ method cannot be called on `Object<NoDerives>` due to unsatisfied trait bounds
   |
note: the following trait bounds were not satisfied:
      `NoDerives: Ord`
      `NoDerives: PartialOrd`
  --> $DIR/issue-91550.rs:21:9
   |
LL | impl<T: Ord + PartialOrd> Object<T> {
   |         ^^^   ^^^^^^^^^^  ---------
   |         |     |
   |         |     unsatisfied trait bound introduced here
   |         unsatisfied trait bound introduced here
help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
   |
LL + #[derive(Eq, Ord, PartialEq, PartialOrd)]
LL | pub struct NoDerives;
   |

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0599`.
