2023-07-13 02:59:01 +00:00
error[E0391]: cycle detected when computing type of `Foo::T`
2018-12-25 15:56:47 +00:00
--> $DIR/issue-34373.rs:7:30
2018-07-15 21:11:54 +00:00
|
2019-03-09 12:03:44 +00:00
LL | pub struct Foo<T = Box<Trait<DefaultFoo>>>;
2018-07-15 21:11:54 +00:00
| ^^^^^^^^^^
|
2021-07-21 01:06:39 +00:00
note: ...which requires expanding type alias `DefaultFoo`...
2023-10-31 13:45:26 +00:00
--> $DIR/issue-34373.rs:10:19
2018-07-15 21:11:54 +00:00
|
LL | type DefaultFoo = Foo;
| ^^^
2020-05-31 15:11:51 +00:00
= note: ...which again requires computing type of `Foo::T`, completing the cycle
2024-02-23 11:45:44 +00:00
note: cycle used when checking that `Foo` is well-formed
--> $DIR/issue-34373.rs:7:1
2019-01-01 18:08:25 +00:00
|
2024-02-23 11:45:44 +00:00
LL | pub struct Foo<T = Box<Trait<DefaultFoo>>>;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-07-19 01:53:34 +00:00
= note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information
2018-07-15 21:11:54 +00:00
2023-10-31 13:45:26 +00:00
error[E0038]: the trait `Trait` cannot be made into an object
--> $DIR/issue-34373.rs:7:24
|
LL | pub struct Foo<T = Box<Trait<DefaultFoo>>>;
| ^^^^^^^^^^^^^^^^^ `Trait` cannot be made into an object
|
2024-09-25 08:38:40 +00:00
note: for a trait to be "dyn-compatible" 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>
2023-10-31 13:45:26 +00:00
--> $DIR/issue-34373.rs:4:8
|
LL | trait Trait<T> {
| ----- this trait cannot be made into an object...
LL | fn foo(_: T) {}
| ^^^ ...because associated function `foo` has no `self` parameter
help: consider turning `foo` into a method by giving it a `&self` argument
|
LL | fn foo(&self, _: T) {}
| ++++++
help: alternatively, consider constraining `foo` so it does not apply to trait objects
|
LL | fn foo(_: T) where Self: Sized {}
| +++++++++++++++++
2024-02-01 14:58:07 +00:00
error[E0392]: type parameter `T` is never used
2023-10-31 13:45:26 +00:00
--> $DIR/issue-34373.rs:7:16
|
LL | pub struct Foo<T = Box<Trait<DefaultFoo>>>;
2024-02-01 14:58:07 +00:00
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ unused type parameter
2023-10-31 13:45:26 +00:00
|
= help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
2024-02-01 14:58:07 +00:00
= help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead
2023-10-31 13:45:26 +00:00
error: aborting due to 3 previous errors
2018-07-15 21:11:54 +00:00
2023-10-31 13:45:26 +00:00
Some errors have detailed explanations: E0038, E0391, E0392.
For more information about an error, try `rustc --explain E0038`.