mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 11:48:30 +00:00

The recently landed PR to adjust arbitrary self types was a bit overenthusiastic, advising folks to use the new Receiver trait even before it's been stabilized. Revert to the older wording of the lint in such cases.
29 lines
1.3 KiB
Plaintext
29 lines
1.3 KiB
Plaintext
error[E0307]: invalid `self` parameter type: `&dyn Foo`
|
|
--> $DIR/inference_var_self_argument.rs:5:24
|
|
|
|
|
LL | async fn foo(self: &dyn Foo) {
|
|
| ^^^^^^^^
|
|
|
|
|
= note: type of `self` must be `Self` or a type that dereferences to it
|
|
= help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
|
|
|
error[E0038]: the trait `Foo` cannot be made into an object
|
|
--> $DIR/inference_var_self_argument.rs:5:5
|
|
|
|
|
LL | async fn foo(self: &dyn Foo) {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Foo` cannot be made into an object
|
|
|
|
|
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>
|
|
--> $DIR/inference_var_self_argument.rs:5:14
|
|
|
|
|
LL | trait Foo {
|
|
| --- this trait cannot be made into an object...
|
|
LL | async fn foo(self: &dyn Foo) {
|
|
| ^^^ ...because method `foo` is `async`
|
|
= help: consider moving `foo` to another trait
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
Some errors have detailed explanations: E0038, E0307.
|
|
For more information about an error, try `rustc --explain E0038`.
|