1error[E0107]: missing generics for associated type `SuperTrait::SubType`
2  --> $DIR/issue-76535.rs:36:33
3   |
4LL |     let sub: Box<dyn SuperTrait<SubType = SubStruct>> = Box::new(SuperStruct::new(0));
5   |                                 ^^^^^^^ expected 1 lifetime argument
6   |
7note: associated type defined here, with 1 lifetime parameter: `'a`
8  --> $DIR/issue-76535.rs:6:10
9   |
10LL |     type SubType<'a>: SubTrait where Self: 'a;
11   |          ^^^^^^^ --
12help: add missing lifetime argument
13   |
14LL |     let sub: Box<dyn SuperTrait<SubType<'a> = SubStruct>> = Box::new(SuperStruct::new(0));
15   |                                 ~~~~~~~~~~~
16
17error[E0038]: the trait `SuperTrait` cannot be made into an object
18  --> $DIR/issue-76535.rs:36:14
19   |
20LL |     let sub: Box<dyn SuperTrait<SubType = SubStruct>> = Box::new(SuperStruct::new(0));
21   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `SuperTrait` cannot be made into an object
22   |
23note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
24  --> $DIR/issue-76535.rs:6:10
25   |
26LL | pub trait SuperTrait {
27   |           ---------- this trait cannot be made into an object...
28LL |     type SubType<'a>: SubTrait where Self: 'a;
29   |          ^^^^^^^ ...because it contains the generic associated type `SubType`
30   = help: consider moving `SubType` to another trait
31
32error[E0038]: the trait `SuperTrait` cannot be made into an object
33  --> $DIR/issue-76535.rs:36:57
34   |
35LL |     let sub: Box<dyn SuperTrait<SubType = SubStruct>> = Box::new(SuperStruct::new(0));
36   |                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `SuperTrait` cannot be made into an object
37   |
38note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
39  --> $DIR/issue-76535.rs:6:10
40   |
41LL | pub trait SuperTrait {
42   |           ---------- this trait cannot be made into an object...
43LL |     type SubType<'a>: SubTrait where Self: 'a;
44   |          ^^^^^^^ ...because it contains the generic associated type `SubType`
45   = help: consider moving `SubType` to another trait
46   = note: required because of the requirements on the impl of `CoerceUnsized<Box<dyn SuperTrait<SubType = SubStruct<'_>>>>` for `Box<SuperStruct>`
47   = note: required by cast to type `Box<dyn SuperTrait<SubType = SubStruct<'_>>>`
48
49error: aborting due to 3 previous errors
50
51Some errors have detailed explanations: E0038, E0107.
52For more information about an error, try `rustc --explain E0038`.
53