impl-trait-utils icon indicating copy to clipboard operation
impl-trait-utils copied to clipboard

Provide a Shorthand for adding Send bounds

Open shadowcpy opened this issue 1 year ago • 1 comments

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.

shadowcpy avatar Dec 26 '23 17:12 shadowcpy

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.

GoldsteinE avatar Jan 19 '24 16:01 GoldsteinE