afea0b4eab
We're stabilizing `async fn` in trait (AFIT), but we have some reservations about how people might use this in the definitions of publicly-visible traits, so we're going to lint about that. This is a bit of an odd lint for `rustc`. We normally don't lint just to have people confirm that they understand how Rust works. But in this one exceptional case, this seems like the right thing to do as compared to the other plausible alternatives. In this commit, we describe the nature of this odd lint.
21 lines
736 B
Plaintext
21 lines
736 B
Plaintext
error: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
|
|
--> $DIR/warn.rs:7:5
|
|
|
|
|
LL | async fn not_send();
|
|
| ^^^^^
|
|
|
|
|
= note: you can suppress this lint if you plan to use the trait locally, for concrete types, or do not care about auto traits like `Send` on the `Future`
|
|
note: the lint level is defined here
|
|
--> $DIR/warn.rs:4:9
|
|
|
|
|
LL | #![deny(async_fn_in_trait)]
|
|
| ^^^^^^^^^^^^^^^^^
|
|
help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`
|
|
|
|
|
LL - async fn not_send();
|
|
LL + fn not_send() -> impl std::future::Future<Output = ()> + Send;
|
|
|
|
|
|
|
error: aborting due to previous error
|
|
|