rust-lang / impl-trait-utils

Utilities for working with impl traits in Rust.
Apache License 2.0
85 stars 8 forks source link

Provide a Shorthand for adding Send bounds #18

Open your-sudden-death opened 8 months ago

your-sudden-death commented 8 months ago

Hey everyone,

it would be great if we could have a shorthand for making a trait Send only, like this:

#[trait_variant::only_send]
pub trait SomeTrait {
  async fn hello() -> i32;
}

desugaring to

pub trait SomeTrait: Send {
  fn hello() -> impl Future<Output = i32> + Send;
}

(no second variant)

The rationale behind it being that with the mostly Multithreaded Executors that are used widely right now (like tokio), this will probably be the default case once AFIT is becoming stable on 28th.

GoldsteinE commented 7 months ago

One more data point for rationale: rust-analyzer would generate async fn implementation methods with #[trait_variant::only_send], but -> impl Future<Output = i32> + Send methods with manually specified RPITIT.