]>
Commit | Line | Data |
---|---|---|
e74abb32 | 1 | error[E0038]: the trait `Foo` cannot be made into an object |
f2b60f7d | 2 | --> $DIR/object-safety-no-static.rs:12:22 |
e74abb32 | 3 | | |
29967ef6 | 4 | LL | fn diverges() -> Box<dyn Foo> { |
f2b60f7d | 5 | | ^^^^^^^ `Foo` cannot be made into an object |
29967ef6 XL |
6 | | |
7 | note: 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> | |
8 | --> $DIR/object-safety-no-static.rs:9:8 | |
9 | | | |
74b04a01 XL |
10 | LL | trait Foo { |
11 | | --- this trait cannot be made into an object... | |
e74abb32 | 12 | LL | fn foo() {} |
29967ef6 | 13 | | ^^^ ...because associated function `foo` has no `self` parameter |
ed00b5ec | 14 | = help: only type `Bar` implements the trait, consider using it directly instead |
29967ef6 | 15 | help: consider turning `foo` into a method by giving it a `&self` argument |
74b04a01 | 16 | | |
29967ef6 | 17 | LL | fn foo(&self) {} |
94222f64 | 18 | | +++++ |
29967ef6 | 19 | help: alternatively, consider constraining `foo` so it does not apply to trait objects |
74b04a01 XL |
20 | | |
21 | LL | fn foo() where Self: Sized {} | |
94222f64 | 22 | | +++++++++++++++++ |
e74abb32 | 23 | |
4b012472 | 24 | error: aborting due to 1 previous error |
e74abb32 XL |
25 | |
26 | For more information about this error, try `rustc --explain E0038`. |