4 // Regression test to ensure we handle debruijn indices correctly in projection
5 // normalization under binders. Found in crater run for #85499
7 use std::future::Future;
9 pub enum Outcome<S, E> {
12 pub struct Request<'r> {
13 _marker: std::marker::PhantomData<&'r ()>,
15 pub trait FromRequest<'r>: Sized {
17 fn from_request<'life0>(
18 request: &'r Request<'life0>,
19 ) -> Pin<Box<dyn Future<Output = Outcome<Self, Self::Error>>>>;
21 impl<'r, T: FromRequest<'r>> FromRequest<'r> for Option<T> {
23 fn from_request<'life0>(
24 request: &'r Request<'life0>,
25 ) -> Pin<Box<dyn Future<Output = Outcome<Self, Self::Error>>>> {
27 let request = request;
28 match T::from_request(request).await {