rocket regression: rigid alias don't require trait to hold · Issue #177 · rust-lang/trait-system-refactor-initiative (original) (raw)
use std::{future::Future, pin::Pin};
pub trait FromRequest<'r> {
type Assoc;
fn from_request() -> Pin<Box<dyn Future<Output = Self::Assoc> + Send>>;
}
fn from_request<'r, T: FromRequest<'r>>() -> Pin<Box<dyn Future<Output = ()> + Send>> {
Box::pin(async move {
T::from_request().await;
})
}