rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.58k stars 12.74k forks source link

Error in compilation #103181

Closed belooping closed 2 years ago

belooping commented 2 years ago

Code

//------- External library (jv_lib/src/lib.rs
/*--------------------------------------------------------
# Purpose: shared library for jv_* micro services project
# version: 1.0
# created by DIRI on 11/10/2022.
# last modified by DIRI on 17/10/2022.
--------------------------------------------------------*/
use clap::Parser;
use serde::{Serialize, Deserialize};
use hyper::http;

#[derive(Serialize, Deserialize)]
pub struct JvObject {
    pub jv_id: String,
    pub jv_owner: String,
    pub jv_build: String,
    pub jv_value: String
}

#[derive(Serialize, Deserialize)]
pub struct JVs {
    pub contact: String,
    pub description: String,
    pub build: String,
    pub jvs_list: Vec<JvObject>
}

#[derive(Serialize, Deserialize)]
// see https://jsonapi.org for reference
pub struct ErrorObject {
    pub status: String, // HTML status code
    pub reason: String, // short description
    pub detail: String, // detailed description
//    pub source: String  // reference to the primary source of the error
}

#[derive(Serialize, Deserialize)]
pub struct ErrorMessage {
    pub contact: String,
    pub id: String, // timestamp
    pub errors: Vec<ErrorObject>
}

#[derive(Parser)]
#[command(author, version, about = "Microservice to read JVs file.")]
pub struct Args {
    #[arg(
        short,
        long,
        help = "Address to bind the server to.",
        default_value = "127.0.0.1"
    )]
    pub address: String,
    #[arg(short, long, help = "Listening port.", default_value = "9000")]
    pub port: u16,
}

pub type Request = http::Request<hyper::Body>;
pub type Response = http::Response<hyper::Body>;
//-------
//------- Main program jv_fget/src/lib.rs
/*--------------------------------------------------------
# Purpose: library for jv_fget
# version: 1.0
# created by DIRI on 05/10/2022.
# last modified by DIRI on 17/10/2022.
--------------------------------------------------------*/
// system crates
use chrono::prelude::*;
use backtrace::Backtrace;
use std::{
    net::SocketAddr,
    convert::Infallible,
    error::Error,
    io::Write,
    cell::RefCell,
    sync::Arc,
    panic::AssertUnwindSafe,
};
use hyper::http;
use flate2::{write::ZlibEncoder, Compression};
use futures::{future::FutureExt, Future};

// smals crates
use jv_lib;

// --- Functions ---
async fn get_jvs(jvs_file: &str) -> jv_lib::Response {
    let json_buffer = std::fs::read_to_string(jvs_file).unwrap();
    response_handler(&json_buffer, "application/json", http::StatusCode::OK).await
}

async fn request_handler(request: jv_lib::Request, jvs_file: &str) -> jv_lib::Response {
    match(request.method(), request.uri().path()) {
        // get the JVs list
        (&hyper::Method::GET, "/jvs") => get_jvs(&jvs_file).await,
        // all other request are not allowed
        _ => {
            // method OK but wrong uri
            if request.method().as_str() == "GET" {
                error_handler(http::StatusCode::NOT_FOUND).await
            // wrong method
            } else {
                error_handler(http::StatusCode::METHOD_NOT_ALLOWED).await
            }
        }
    }
}

async fn response_handler(body: &str, content_type: &str, status_code: http::StatusCode) -> jv_lib::Response {
    bytes_handler(body.as_bytes(), content_type, status_code).await
}

async fn error_handler(http_status: http::StatusCode) -> jv_lib::Response {
    let content_type = "application/json";
    // create error_message
    let err_msg = jv_lib::ErrorMessage {
        contact: String::from("l2000@smals.be"),
        id: format!("{}",Local::now().format("%Y%m%d.%H%M%S")),
        errors: vec![
            jv_lib::ErrorObject {
                status: String::from(http_status.as_str()),
                reason: match http_status {
                    http::StatusCode::NOT_FOUND => String::from("notFound"),
                    http::StatusCode::METHOD_NOT_ALLOWED => String::from("methodNotAllowed"),
                    _ => String::from("unknown")
                },
                detail: match http_status {
                    http::StatusCode::NOT_FOUND => String::from("API not found"),
                    http::StatusCode::METHOD_NOT_ALLOWED => String::from("Method is not allowed"),
                    _ => String::from("unknown")
                },
            }
        ]
    };
    let err_json = serde_json::to_vec(&err_msg).unwrap();
    bytes_handler(&err_json, &content_type, http_status).await
}

async fn bytes_handler(body: &[u8], content_type: &str, status_code: http::StatusCode) -> jv_lib::Response {
    let mut encoder = ZlibEncoder::new(Vec::new(), Compression::default());
    encoder.write_all(body).unwrap();
    let compressed = encoder.finish().unwrap();
    hyper::Response::builder()
        .status(status_code)
        .header(hyper::header::CONTENT_TYPE, content_type)
        .header(hyper::header::CONTENT_ENCODING, "deflate")
        .body(hyper::Body::from(compressed))
        .unwrap()
}

async fn serve<H, F>( socket: SocketAddr, jvs_file: &str, r_handler: H) -> hyper::Result<()>
    where H: 'static + Fn(jv_lib::Request, &str) -> F + Send + Sync,
          F: Future<Output = jv_lib::Response> + Send,  
{
    // Create a task local that will store the panic message and backtrace if a panic occurs.
    tokio::task_local! {
        static PANIC_MESSAGE_AND_BACKTRACE: RefCell<Option<(String, Backtrace)>>;
    }
    async fn service<H, F>(
        r_handler: Arc<H>,
        mut request: jv_lib::Request,
    ) -> Result<jv_lib::Response, Infallible>
    where
        H: Fn(jv_lib::Request, &str) -> F + Send + Sync + 'static,
        F: Future<Output = jv_lib::Response> + Send,
    {
        let method = request.method().clone();
        let path = request.uri().path_and_query().unwrap().path().to_owned();
        tracing::info!(path = %path, method = %method, "request");
//        request.extensions_mut().insert(context);
        let result = AssertUnwindSafe(request_handler(request, &jvs_file)).catch_unwind().await;
        let start = std::time::SystemTime::now();
        let response = result.unwrap_or_else(|_| {
            let body = PANIC_MESSAGE_AND_BACKTRACE.with(|panic_message_and_backtrace| {
                let panic_message_and_backtrace = panic_message_and_backtrace.borrow();
                let (message, backtrace) = panic_message_and_backtrace.as_ref().unwrap();
                tracing::error!(
                    method = %method,
                    path = %path,
                    backtrace = ?backtrace,
                    "500"
                );
                format!("{}\n{:?}", message, backtrace)
            });
            http::Response::builder()
                .status(http::StatusCode::INTERNAL_SERVER_ERROR)
                .body(hyper::Body::from(body))
                .unwrap()
        });
        tracing::info!(
            "Response generated in {}μs",
            start.elapsed().unwrap_or_default().as_micros()
        );
        Ok(response)
    }
    // Install a panic hook that will record the panic message and backtrace if a panic occurs.
    let hook = std::panic::take_hook();
    std::panic::set_hook(Box::new(|panic_info| {
        let value = (panic_info.to_string(), Backtrace::new());
        PANIC_MESSAGE_AND_BACKTRACE.with(|panic_message_and_backtrace| {
            panic_message_and_backtrace.borrow_mut().replace(value);
        })
    }));
    // Wrap the request handler and context with Arc to allow sharing a reference to it with each task.
    let request_handler = Arc::new(request_handler);
    let service = hyper::service::make_service_fn(|_| {
        let request_handler = request_handler.clone();
        async move {
            Ok::<_, Infallible>(hyper::service::service_fn(move |request| {
                let request_handler = request_handler.clone();
                PANIC_MESSAGE_AND_BACKTRACE.scope(RefCell::new(None), async move {
                    service(request_handler, request).await
                })
            }))
        }
    });
    let server = hyper::server::Server::try_bind(&socket)?;
    tracing::info!("🚀 service listening at {}", socket);
    server.serve(service).await?;
    std::panic::set_hook(hook);
    Ok(())
}

// --- Main ---
#[tokio::main]
pub async fn run(params: jv_lib::Args) -> Result<(), Box<dyn Error>> {
    let jvs_file = "/opt/data/jvs.json";
    // prepare listener
    println!("- Preparing connection");
    let socket = SocketAddr::new(params.address.parse(), params.port);

    // start listening 
    serve(socket, &jvs_file, request_handler).await;
    Ok(())
}
//-------

Meta

rustc --version --verbose:

rustc 1.64.0 (a55dd71d5 2022-09-19)
binary: rustc
commit-hash: a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52
commit-date: 2022-09-19
host: x86_64-unknown-linux-gnu
release: 1.64.0
LLVM version: 14.0.6

Error output

Same as below...
Backtrace

``` didou@1906L66C4BF:~/projects/rust/JVs/jv_fget$ RUST_BACKTRACE=1 cargo build Compiling jv_fget v0.1.0 (/home/didou/projects/rust/JVs/jv_fget) error[E0434]: can't capture dynamic environment in a fn item --> jv_fget/src/lib.rs:112:65 | 112 | let result = AssertUnwindSafe(request_handler(request, &jvs_file)).catch_unwind().await; | ^^^^^^^^ | = help: use the `|| { ... }` closure form instead error[E0308]: mismatched types --> jv_fget/src/lib.rs:153:21 | 153 | service(request_handler, request).await | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other | = note: expected trait `for<'r> fn(Request, &'r str) -> impl for<'r> futures::Future> {request_handler} as FnOnce<(Request, &'r str)>>` found trait `for<'r> fn(Request, &'r str) -> impl for<'r> futures::Future> {request_handler} as FnOnce<(Request, &'r str)>>` note: the lifetime requirement is introduced here --> jv_fget/src/lib.rs:105:41 | 105 | H: Fn(jv_lib::Request, &str) -> F + Send + Sync + 'static, | ^ error: internal compiler error: compiler/rustc_trait_selection/src/traits/query/normalize.rs:257:21: unexpected ambiguity: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [Binder(ProjectionPredicate(ProjectionTy { substs: [F], item_def_id: DefId(2:13762 ~ core[6fcc]::future::future::Future::Output) }, Ty(hyper::Response)), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(ProjectionPredicate(ProjectionTy { substs: [H, (hyper::Request, &str)], item_def_id: DefId(2:3521 ~ core[6fcc]::ops::function::FnOnce::Output) }, Ty(F)), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(OutlivesPredicate(H, ReStatic), [])], reveal: UserFacing, constness: NotConst }, value: ProjectionTy { substs: [hyper::Server>], item_def_id: DefId(2:13778 ~ core[6fcc]::future::into_future::IntoFuture::IntoFuture) } } } Canonical { max_universe: U40, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U16) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U40) }, CanonicalVarInfo { kind: Region(U40) }, CanonicalVarInfo { kind: Region(U1) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U1, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U2) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U2, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U3) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U3, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U4) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U4, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U5) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U5, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U6) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U6, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U7) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U7, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U8) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U8, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U9) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U9, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U10) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U10, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U11) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U11, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U12) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U12, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U13) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U13, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U14) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U14, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U15) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U15, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U16) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U16, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U17) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U17, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U18) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U18, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U19) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U19, name: BrNamed(DefId(35:1017 ~ hyper[5ea2]::service::make::{impl#2}::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U20) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U20, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U20) }, CanonicalVarInfo { kind: Region(U21) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U21, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U22) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U22, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U22) }, CanonicalVarInfo { kind: Region(U23) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U23, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U23) }, CanonicalVarInfo { kind: Region(U24) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U24, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U24) }, CanonicalVarInfo { kind: Region(U25) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U25, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U25) }, CanonicalVarInfo { kind: Region(U26) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U26, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U26) }, CanonicalVarInfo { kind: Region(U27) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U27, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U27) }, CanonicalVarInfo { kind: Region(U28) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U28, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U28) }, CanonicalVarInfo { kind: Region(U29) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U29, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U29) }, CanonicalVarInfo { kind: Region(U30) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U30, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U30) }, CanonicalVarInfo { kind: Region(U31) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U31, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U31) }, CanonicalVarInfo { kind: Region(U32) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U32, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U32) }, CanonicalVarInfo { kind: Region(U33) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U33, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U33) }, CanonicalVarInfo { kind: Region(U34) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U34, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U34) }, CanonicalVarInfo { kind: Region(U35) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U35, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U35) }, CanonicalVarInfo { kind: Region(U36) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U36, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U36) }, CanonicalVarInfo { kind: Region(U37) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U37, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U37) }, CanonicalVarInfo { kind: Region(U38) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U38, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U38) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U39, name: BrNamed(DefId(35:10727 ~ hyper[5ea2]::service::make::{impl#4}::'_), '_) }) }, CanonicalVarInfo { kind: Region(U39) }], value: QueryResponse { var_values: CanonicalVarValues { var_values: [ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrAnon(0) })] }, region_constraints: QueryRegionConstraints { outlives: [Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 3, kind: BrAnon(3) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 4, kind: BrAnon(4) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 5, kind: BrAnon(5) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 6, kind: BrAnon(6) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 7, kind: BrAnon(7) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 8, kind: BrAnon(8) }), ReStatic), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 9, kind: BrAnon(9) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 10, kind: BrAnon(10) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 11, kind: BrAnon(11) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 12, kind: BrAnon(12) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 13, kind: BrAnon(13) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 14, kind: BrAnon(14) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 15, kind: BrAnon(15) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 16, kind: BrAnon(16) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 17, kind: BrAnon(17) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 18, kind: BrAnon(18) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 19, kind: BrAnon(19) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 20, kind: BrAnon(20) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 21, kind: BrAnon(21) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 22, kind: BrAnon(22) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 23, kind: BrAnon(23) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 24, kind: BrAnon(24) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 25, kind: BrAnon(25) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 26, kind: BrAnon(26) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 27, kind: BrAnon(27) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 28, kind: BrAnon(28) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 29, kind: BrAnon(29) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 30, kind: BrAnon(30) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 31, kind: BrAnon(31) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 32, kind: BrAnon(32) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 33, kind: BrAnon(33) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 34, kind: BrAnon(34) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 35, kind: BrAnon(35) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 36, kind: BrAnon(36) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 37, kind: BrAnon(37) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 38, kind: BrAnon(38) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 39, kind: BrAnon(39) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 40, kind: BrAnon(40) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 41, kind: BrAnon(41) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 42, kind: BrAnon(42) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 43, kind: BrAnon(43) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 44, kind: BrAnon(44) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 45, kind: BrAnon(45) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 47, kind: BrAnon(47) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 49, kind: BrAnon(49) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 50, kind: BrAnon(50) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 52, kind: BrAnon(52) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 55, kind: BrAnon(55) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 58, kind: BrAnon(58) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 61, kind: BrAnon(61) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 64, kind: BrAnon(64) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 67, kind: BrAnon(67) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 70, kind: BrAnon(70) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 73, kind: BrAnon(73) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 76, kind: BrAnon(76) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 79, kind: BrAnon(79) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 82, kind: BrAnon(82) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 85, kind: BrAnon(85) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 88, kind: BrAnon(88) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 91, kind: BrAnon(91) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 94, kind: BrAnon(94) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 97, kind: BrAnon(97) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 100, kind: BrAnon(100) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 103, kind: BrAnon(103) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 104, kind: BrAnon(104) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 105, kind: BrAnon(105) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 104, kind: BrAnon(104) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 10, kind: BrAnon(10) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 9, kind: BrAnon(9) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 12, kind: BrAnon(12) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 11, kind: BrAnon(11) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 14, kind: BrAnon(14) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 13, kind: BrAnon(13) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 16, kind: BrAnon(16) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 15, kind: BrAnon(15) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 18, kind: BrAnon(18) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 17, kind: BrAnon(17) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 20, kind: BrAnon(20) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 19, kind: BrAnon(19) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 22, kind: BrAnon(22) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 21, kind: BrAnon(21) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 24, kind: BrAnon(24) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 23, kind: BrAnon(23) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 26, kind: BrAnon(26) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 25, kind: BrAnon(25) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 28, kind: BrAnon(28) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 27, kind: BrAnon(27) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 30, kind: BrAnon(30) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 29, kind: BrAnon(29) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 32, kind: BrAnon(32) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 31, kind: BrAnon(31) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 34, kind: BrAnon(34) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 33, kind: BrAnon(33) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 36, kind: BrAnon(36) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 35, kind: BrAnon(35) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 38, kind: BrAnon(38) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 37, kind: BrAnon(37) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 40, kind: BrAnon(40) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 39, kind: BrAnon(39) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 42, kind: BrAnon(42) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 41, kind: BrAnon(41) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 44, kind: BrAnon(44) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 43, kind: BrAnon(43) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 45, kind: BrAnon(45) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 47, kind: BrAnon(47) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 49, kind: BrAnon(49) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 50, kind: BrAnon(50) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 52, kind: BrAnon(52) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 55, kind: BrAnon(55) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 58, kind: BrAnon(58) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 61, kind: BrAnon(61) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 64, kind: BrAnon(64) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 67, kind: BrAnon(67) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 70, kind: BrAnon(70) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 73, kind: BrAnon(73) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 76, kind: BrAnon(76) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 79, kind: BrAnon(79) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 82, kind: BrAnon(82) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 85, kind: BrAnon(85) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 88, kind: BrAnon(88) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 91, kind: BrAnon(91) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 94, kind: BrAnon(94) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 97, kind: BrAnon(97) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 100, kind: BrAnon(100) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 104, kind: BrAnon(104) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 103, kind: BrAnon(103) })), []), Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 104, kind: BrAnon(104) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 105, kind: BrAnon(105) })), []), Binder(OutlivesPredicate(hyper::server::conn::AddrStream, ReStatic), []), Binder(OutlivesPredicate(hyper::Body, ReStatic), []), Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream>, impl futures::Future, std::convert::Infallible>>>, hyper::Body>, ReStatic), []), Binder(OutlivesPredicate(hyper::server::server::new_svc::NewSvcTask, std::convert::Infallible>>, hyper::service::util::ServiceFn<[closure@jv_fget/src/lib.rs:150:60: 150:74], hyper::Body>, hyper::common::exec::Exec, hyper::server::server::NoopWatcher>, ReStatic), []), Binder(OutlivesPredicate(std::io::Error, ReLateBound(DebruijnIndex(1), BoundRegion { var: 3, kind: BrAnon(3) })), []), Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), Binder(OutlivesPredicate(hyper::server::conn::AddrStream, ReStatic), []), Binder(OutlivesPredicate(hyper::Body, ReStatic), []), Binder(OutlivesPredicate(hyper::Body, ReStatic), []), Binder(OutlivesPredicate(hyper::Body, ReStatic), []), Binder(OutlivesPredicate(std::convert::Infallible, ReLateBound(DebruijnIndex(1), BoundRegion { var: 4, kind: BrAnon(4) })), []), Binder(OutlivesPredicate(std::cell::RefCell>, ReStatic), []), Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream>, impl futures::Future, std::convert::Infallible>>>, hyper::Body>, ReStatic), []), Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream>, impl futures::Future, std::convert::Infallible>>>, hyper::Body>, ReStatic), []), Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream>, impl futures::Future, std::convert::Infallible>>>, hyper::Body>, ReStatic), []), Binder(OutlivesPredicate((), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), Binder(OutlivesPredicate(hyper::Error, ReLateBound(DebruijnIndex(1), BoundRegion { var: 5, kind: BrAnon(5) })), []), Binder(OutlivesPredicate((), ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) })), [])], member_constraints: [] }, certainty: Ambiguous, opaque_types: [], value: NormalizationResult { normalized_ty: hyper::Server> } } } thread 'rustc' panicked at 'Box', /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/compiler/rustc_errors/src/lib.rs:1392:9 stack backtrace: 0: std::panicking::begin_panic:: 1: std::panic::panic_any:: 2: ::bug::<&alloc::string::String> 3: ::bug::<&alloc::string::String> 4: rustc_middle::ty::context::tls::with_opt::::{closure#0}, ()> 5: rustc_middle::util::bug::opt_span_bug_fmt:: 6: rustc_middle::util::bug::bug_fmt 7: ::try_fold_ty 8: <&rustc_middle::ty::list::List as rustc_middle::ty::fold::TypeFoldable>::try_fold_with:: 9: ::normalize:: 10: rustc_traits::type_op::type_op_normalize:: 11: ::enter_canonical_trait_query::>, rustc_middle::ty::sty::FnSig, rustc_traits::type_op::type_op_normalize> 12: rustc_traits::type_op::type_op_normalize_fn_sig 13: >::with_task::>>, core::result::Result<&rustc_middle::infer::canonical::Canonical>, rustc_middle::traits::query::NoSolution>> 14: rustc_query_system::query::plumbing::try_execute_query::>>, core::result::Result<&rustc_middle::infer::canonical::Canonical>, rustc_middle::traits::query::NoSolution>>> 15: rustc_query_system::query::plumbing::get_query:: 16: ::type_op_normalize_fn_sig 17: ::type_op_method 18: ::typeck_mir 19: rustc_borrowck::type_check::type_check 20: rustc_borrowck::nll::compute_regions 21: rustc_borrowck::do_mir_borrowck 22: rustc_borrowck::mir_borrowck 23: >::call_once 24: >::with_task:: 25: rustc_query_system::query::plumbing::try_execute_query::> 26: ::mir_borrowck 27: ::prove_closure_bounds 28: ::typeck_mir 29: rustc_borrowck::type_check::type_check 30: rustc_borrowck::nll::compute_regions 31: rustc_borrowck::do_mir_borrowck 32: rustc_borrowck::mir_borrowck 33: >::call_once 34: >::with_task:: 35: rustc_query_system::query::plumbing::try_execute_query::> 36: ::mir_borrowck 37: rustc_typeck::collect::type_of::type_of 38: >::with_task:: 39: rustc_query_system::query::plumbing::get_query:: 40: rustc_typeck::check::check::check_mod_item_types 41: >::with_task:: 42: rustc_query_system::query::plumbing::try_execute_query::> 43: rustc_query_system::query::plumbing::get_query:: 44: ::time::<(), rustc_typeck::check_crate::{closure#6}> 45: rustc_typeck::check_crate 46: rustc_interface::passes::analysis 47: >::with_task::> 48: rustc_query_system::query::plumbing::try_execute_query::>> 49: rustc_query_system::query::plumbing::get_query:: 50: ::enter::> 51: ::enter::, rustc_errors::ErrorGuaranteed>> 52: rustc_span::with_source_map::, rustc_interface::interface::create_compiler_and_run, rustc_driver::run_compiler::{closure#1}>::{closure#1}> 53: >::set::, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorGuaranteed>> note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md note: rustc 1.64.0 (a55dd71d5 2022-09-19) running on x86_64-unknown-linux-gnu note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental note: some of the compiler flags provided by cargo are hidden query stack during panic: #0 [type_op_normalize_fn_sig] normalizing `Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [Binder(ProjectionPredicate(ProjectionTy { substs: [F], item_def_id: DefId(2:13762 ~ core[6fcc]::future::future::Future::Output) }, Ty(http::response::Response)), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(ProjectionPredicate(ProjectionTy { substs: [H, (http::request::Request, &str)], item_def_id: DefId(2:3521 ~ core[6fcc]::ops::function::FnOnce::Output) }, Ty(F)), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, &str)>>, polarity:Positive), [Region(BrNamed(DefId(0:168 ~ jv_fget[6a58]::serve::'_#1), '_))]), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(OutlivesPredicate(H, ReStatic), [])], reveal: UserFacing, constness: NotConst }, value: Normalize { value: ([hyper::server::server::Server>]; c_variadic: false)->> as core::future::into_future::IntoFuture>::IntoFuture } } }` #1 [mir_borrowck] borrow-checking `serve::{closure#0}` #2 [mir_borrowck] borrow-checking `serve` #3 [type_of] computing type of `serve::{opaque#0}` #4 [check_mod_item_types] checking item types in top-level module #5 [analysis] running analysis passes on this crate end of query stack Some errors have detailed explanations: E0308, E0434. For more information about an error, try `rustc --explain E0308`. error: could not compile `jv_fget` due to 2 previous errors didou@1906L66C4BF:~/projects/rust/JVs/jv_fget$ ```

belooping commented 2 years ago

I'm Rust newbie and I try to make a microservice. The offending line was at first the following: function serve ''' let result = AssertUnwindSafe(request_handler(request)).catch_unwind().await; ''' When I did "cargo check", I had an error and when I tried to correct it with the recommended option, I received.the panic message. ''' let result = AssertUnwindSafe(request_handler(request, &jvs_file)).catch_unwind().await; ''' I will investigate further to simplify the code, and sends this as requested in the error message. Regards Didier

Noratrieb commented 2 years ago

Hi, thank you for your report. Can you verify that this issue still occurs on the latest nightly version?

rustup toolchain install nightly
cargo +nightly build
belooping commented 2 years ago

Hi Nilstrieb, yes, same behavior with the nightly build.

jruderman commented 2 years ago
error: internal compiler error: compiler/rustc_trait_selection/src/traits/query/normalize.rs:257:21: unexpected ambiguity: ...

This check was promoted to 'internal compiler error' in commit 7808f69ad7a31e54719bf71017b745ee3ceac167 as part of pull request #99015 (@lcnr)

Noratrieb commented 2 years ago

Looks like this is the same issue as #102588, which unfortunately also doesn't contain useful info.

belooping commented 2 years ago

Thank you for the info. Best regards Didier

On 18 Oct 2022, 16:14 +0200, Jesse Ruderman @.***>, wrote:

error: internal compiler error: compiler/rustc_trait_selection/src/traits/query/normalize.rs:257:21: unexpected ambiguity: ... This check was promoted to 'internal compiler error' in commit 7808f69 as part of pull request #99015 @.) — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.>

compiler-errors commented 2 years ago

I can look into this. I was investigating the same assertion in #102858.

@rustbot claim

compiler-errors commented 2 years ago

Minimized quite a lot:

use hyper::http;

use std::{convert::Infallible, future::Future, net::SocketAddr, sync::Arc};

async fn request_handler(jvs_file: &str) -> http::Response<hyper::Body> {
    todo!()
}

async fn service<H, F>(r_handler: Arc<H>) -> Result<http::Response<hyper::Body>, Infallible>
where
    H: Fn(&str) -> F + Send,
    F: Future<Output = http::Response<hyper::Body>> + Send,
{
    r_handler(s).await;
    todo!()
}

async fn serve<H, F>(socket: SocketAddr) -> hyper::Result<()>
where
    H: Fn(&str) -> F + Send,
    F: Future<Output = http::Response<hyper::Body>> + Send,
{
    let request_handler = Arc::new(request_handler);
    let service = hyper::service::make_service_fn(|_| {
        let request_handler = request_handler.clone();
        async move {
            Ok::<_, Infallible>(hyper::service::service_fn(move |_| {
                let request_handler = request_handler.clone();
                service(request_handler)
            }))
        }
    });

    let server = hyper::server::Server::try_bind(&socket)?;
    server.serve(service).await?;

    Ok(())
}

fn main() {}
belooping commented 2 years ago

Hello. Michael, Many thanks, I will look at it and for sure learn a lot more Regards

Didier Rigoli Senior Manager

On 18 Oct 2022, 20:20 +0200, Michael Goulet @.***>, wrote:

Minimized quite a lot: use hyper::http;

use std::{convert::Infallible, future::Future, net::SocketAddr, sync::Arc};

async fn request_handler(jvs_file: &str) -> http::Response { todo!() }

async fn service<H, F>(r_handler: Arc) -> Result<http::Response, Infallible> where H: Fn(&str) -> F + Send, F: Future<Output = http::Response> + Send, { r_handler(s).await; todo!() }

async fn serve<H, F>(socket: SocketAddr) -> hyper::Result<()> where H: Fn(&str) -> F + Send, F: Future<Output = http::Response> + Send, { let request_handler = Arc::new(request_handler); let service = hyper::service::make_servicefn(|| { let request_handler = requesthandler.clone(); async move { Ok::<, Infallible>(hyper::service::servicefn(move || { let request_handler = request_handler.clone(); service(request_handler) })) } });

let server = hyper::server::Server::try_bind(&socket)?; server.serve(service).await?;

Ok(()) }

fn main() {} — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

compiler-errors commented 2 years ago

This regressed in 7808f69ad7a31e54719bf71017b745ee3ceac167 -- I can't really work on it any further without a self-contained, minimized version of the ICE, which I attempted and failed to do. If someone wants to minimize it, then that would be greatly appreciated, and I can pick it up after that if nobody else has.

@rustbot ping icebreakers-cleanup-crew @rustbot release-assignment

rustbot commented 2 years ago

Hey Cleanup Crew ICE-breakers! This bug has been identified as a good "Cleanup ICE-breaking candidate". In case it's useful, here are some instructions for tackling these sorts of bugs. Maybe take a look? Thanks! <3

cc @AminArria @ayazhafiz @camelid @chrissimpkins @contrun @elshize @h-michael @HallerPatrick @hdhoang @hellow554 @henryboisdequin @imtsuki @JamesPatrickGill @kanru @KarlK90 @matheus-consoli @mental32 @nmccarty @Noah-Kennedy @pard68 @PeytonT @pierreN @Redblueflame @RobbieClarken @RobertoSnap @robjtede @SarthakSingh31 @shekohex @sinato @smmalis37 @steffahn @Stupremee @tamuhey @turboladen @woshilapin @yerke

jruderman commented 2 years ago

Minimized more (playground):

use std::convert::Infallible;

async fn smarvice() -> Result<hyper::http::Response<hyper::Body>, Infallible> {
    ident_error;
    todo!()
}

#[allow(dead_code)]
async fn iceice<A, B>(bldr: hyper::server::Builder<hyper::server::conn::AddrIncoming>) 
where
    A: Send,
    B: Send,
{
    let service = hyper::service::make_service_fn(|_| {
        async {
            Ok::<_, Infallible>(hyper::service::service_fn(|_| {
                smarvice()
            }))
        }
    });

    bldr.serve(service).await.unwrap();
}

fn main() {}
Error output

``` error[E0425]: cannot find value `ident_error` in this scope --> src/main.rs:4:5 | 4 | ident_error; | ^^^^^^^^^^^ not found in this scope error: internal compiler error: compiler/rustc_trait_selection/src/traits/query/normalize.rs:256:21: unexpected ambiguity: Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), []), Binder(TraitPredicate(, polarity:Positive), [])], reveal: UserFacing, constness: NotConst }, value: ProjectionTy { substs: [hyper::Server>], item_def_id: DefId(2:14053 ~ core[b141]::future::into_future::IntoFuture::IntoFuture) } } } Canonical { max_universe: U39, variables: [CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U16) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: Region(U1) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U1, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U2) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U2, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U3) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U3, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U4) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U4, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U5) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U5, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U6) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U6, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U7) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U7, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U8) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U8, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U9) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U9, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U10) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U10, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U11) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U11, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U12) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U12, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U13) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U13, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U14) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U14, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U15) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U15, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U16) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U16, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U17) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U17, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U18) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U18, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U19) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U19, name: BrNamed(DefId(21:1013 ~ hyper[0b84]::service::make::{ impl#2 }::'a), 'a) }) }, CanonicalVarInfo { kind: Region(U20) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U20, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U20) }, CanonicalVarInfo { kind: Region(U21) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U21, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U22) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U22, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U22) }, CanonicalVarInfo { kind: Region(U23) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U23, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U23) }, CanonicalVarInfo { kind: Region(U24) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U24, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U24) }, CanonicalVarInfo { kind: Region(U25) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U25, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U25) }, CanonicalVarInfo { kind: Region(U26) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U26, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U26) }, CanonicalVarInfo { kind: Region(U27) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U27, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U27) }, CanonicalVarInfo { kind: Region(U28) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U28, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U28) }, CanonicalVarInfo { kind: Region(U29) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U29, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U29) }, CanonicalVarInfo { kind: Region(U30) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U30, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U30) }, CanonicalVarInfo { kind: Region(U31) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U31, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U31) }, CanonicalVarInfo { kind: Region(U32) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U32, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U32) }, CanonicalVarInfo { kind: Region(U33) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U33, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U33) }, CanonicalVarInfo { kind: Region(U34) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U34, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U34) }, CanonicalVarInfo { kind: Region(U35) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U35, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U35) }, CanonicalVarInfo { kind: Region(U36) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U36, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U36) }, CanonicalVarInfo { kind: Region(U37) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U37, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U37) }, CanonicalVarInfo { kind: Region(U38) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U38, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U38) }, CanonicalVarInfo { kind: Region(U39) }, CanonicalVarInfo { kind: PlaceholderRegion(Placeholder { universe: U39, name: BrNamed(DefId(21:10686 ~ hyper[0b84]::service::make::{ impl#4 }::'_), '_) }) }, CanonicalVarInfo { kind: Region(U39) }], value: QueryResponse { var_values: CanonicalVarValues { var_values: [] }, region_constraints: QueryRegionConstraints { outlives: [(Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 0, kind: BrAnon(0) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 0, kind: BrAnon(0) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 0, kind: BrAnon(0) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 0, kind: BrAnon(0) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) }), ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 3, kind: BrAnon(3) }), ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 4, kind: BrAnon(4) }), ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 5, kind: BrAnon(5) }), ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 6, kind: BrAnon(6) }), ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 7, kind: BrAnon(7) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 8, kind: BrAnon(8) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 9, kind: BrAnon(9) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 10, kind: BrAnon(10) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 11, kind: BrAnon(11) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 12, kind: BrAnon(12) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 13, kind: BrAnon(13) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 14, kind: BrAnon(14) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 15, kind: BrAnon(15) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 16, kind: BrAnon(16) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 17, kind: BrAnon(17) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 18, kind: BrAnon(18) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 19, kind: BrAnon(19) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 20, kind: BrAnon(20) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 21, kind: BrAnon(21) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 22, kind: BrAnon(22) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 23, kind: BrAnon(23) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 24, kind: BrAnon(24) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 25, kind: BrAnon(25) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 26, kind: BrAnon(26) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 27, kind: BrAnon(27) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 28, kind: BrAnon(28) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 29, kind: BrAnon(29) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 30, kind: BrAnon(30) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 31, kind: BrAnon(31) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 32, kind: BrAnon(32) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 33, kind: BrAnon(33) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 34, kind: BrAnon(34) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 35, kind: BrAnon(35) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 36, kind: BrAnon(36) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 37, kind: BrAnon(37) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 38, kind: BrAnon(38) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 39, kind: BrAnon(39) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 40, kind: BrAnon(40) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 41, kind: BrAnon(41) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 42, kind: BrAnon(42) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 43, kind: BrAnon(43) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 44, kind: BrAnon(44) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 45, kind: BrAnon(45) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 47, kind: BrAnon(47) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 49, kind: BrAnon(49) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 50, kind: BrAnon(50) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 52, kind: BrAnon(52) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 55, kind: BrAnon(55) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 58, kind: BrAnon(58) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 61, kind: BrAnon(61) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 64, kind: BrAnon(64) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 67, kind: BrAnon(67) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 70, kind: BrAnon(70) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 73, kind: BrAnon(73) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 76, kind: BrAnon(76) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 79, kind: BrAnon(79) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 82, kind: BrAnon(82) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 85, kind: BrAnon(85) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 88, kind: BrAnon(88) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 91, kind: BrAnon(91) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 94, kind: BrAnon(94) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 97, kind: BrAnon(97) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 100, kind: BrAnon(100) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 103, kind: BrAnon(103) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 8, kind: BrAnon(8) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 7, kind: BrAnon(7) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 10, kind: BrAnon(10) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 9, kind: BrAnon(9) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 12, kind: BrAnon(12) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 11, kind: BrAnon(11) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 14, kind: BrAnon(14) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 13, kind: BrAnon(13) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 16, kind: BrAnon(16) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 15, kind: BrAnon(15) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 18, kind: BrAnon(18) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 17, kind: BrAnon(17) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 20, kind: BrAnon(20) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 19, kind: BrAnon(19) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 22, kind: BrAnon(22) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 21, kind: BrAnon(21) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 24, kind: BrAnon(24) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 23, kind: BrAnon(23) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 26, kind: BrAnon(26) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 25, kind: BrAnon(25) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 28, kind: BrAnon(28) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 27, kind: BrAnon(27) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 30, kind: BrAnon(30) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 29, kind: BrAnon(29) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 32, kind: BrAnon(32) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 31, kind: BrAnon(31) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 34, kind: BrAnon(34) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 33, kind: BrAnon(33) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 36, kind: BrAnon(36) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 35, kind: BrAnon(35) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 38, kind: BrAnon(38) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 37, kind: BrAnon(37) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 40, kind: BrAnon(40) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 39, kind: BrAnon(39) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 42, kind: BrAnon(42) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 41, kind: BrAnon(41) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 44, kind: BrAnon(44) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 43, kind: BrAnon(43) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 45, kind: BrAnon(45) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 46, kind: BrAnon(46) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 47, kind: BrAnon(47) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 49, kind: BrAnon(49) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 48, kind: BrAnon(48) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 50, kind: BrAnon(50) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 51, kind: BrAnon(51) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 52, kind: BrAnon(52) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 53, kind: BrAnon(53) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 54, kind: BrAnon(54) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 55, kind: BrAnon(55) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 56, kind: BrAnon(56) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 57, kind: BrAnon(57) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 58, kind: BrAnon(58) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 59, kind: BrAnon(59) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 60, kind: BrAnon(60) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 61, kind: BrAnon(61) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 62, kind: BrAnon(62) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 63, kind: BrAnon(63) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 64, kind: BrAnon(64) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 65, kind: BrAnon(65) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 66, kind: BrAnon(66) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 67, kind: BrAnon(67) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 68, kind: BrAnon(68) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 69, kind: BrAnon(69) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 70, kind: BrAnon(70) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 71, kind: BrAnon(71) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 72, kind: BrAnon(72) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 73, kind: BrAnon(73) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 74, kind: BrAnon(74) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 75, kind: BrAnon(75) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 76, kind: BrAnon(76) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 77, kind: BrAnon(77) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 78, kind: BrAnon(78) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 79, kind: BrAnon(79) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 80, kind: BrAnon(80) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 81, kind: BrAnon(81) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 82, kind: BrAnon(82) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 83, kind: BrAnon(83) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 84, kind: BrAnon(84) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 85, kind: BrAnon(85) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 86, kind: BrAnon(86) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 87, kind: BrAnon(87) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 88, kind: BrAnon(88) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 89, kind: BrAnon(89) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 90, kind: BrAnon(90) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 91, kind: BrAnon(91) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 92, kind: BrAnon(92) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 93, kind: BrAnon(93) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 94, kind: BrAnon(94) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 95, kind: BrAnon(95) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 96, kind: BrAnon(96) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 97, kind: BrAnon(97) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 98, kind: BrAnon(98) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 99, kind: BrAnon(99) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 100, kind: BrAnon(100) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 101, kind: BrAnon(101) })), []), BoringNoLocation), (Binder(OutlivesPredicate(ReLateBound(DebruijnIndex(1), BoundRegion { var: 102, kind: BrAnon(102) }), ReLateBound(DebruijnIndex(1), BoundRegion { var: 103, kind: BrAnon(103) })), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::server::conn::AddrStream, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::Body, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream, std::convert::Infallible>>, hyper::Body>, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::server::server::new_svc::NewSvcTask, std::convert::Infallible>>, hyper::service::util::ServiceFn<[closure@src/main.rs:16:60: 16:63], hyper::Body>, hyper::common::exec::Exec, hyper::server::server::NoopWatcher>, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(std::io::Error, ReLateBound(DebruijnIndex(1), BoundRegion { var: 2, kind: BrAnon(2) })), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::server::conn::AddrStream, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::Body, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::Body, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::Body, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(std::convert::Infallible, ReLateBound(DebruijnIndex(1), BoundRegion { var: 3, kind: BrAnon(3) })), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream, std::convert::Infallible>>, hyper::Body>, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream, std::convert::Infallible>>, hyper::Body>, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::proto::h2::server::H2Stream, std::convert::Infallible>>, hyper::Body>, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate((), ReLateBound(DebruijnIndex(1), BoundRegion { var: 0, kind: BrAnon(0) })), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::body::Bytes, ReStatic), []), BoringNoLocation), (Binder(OutlivesPredicate(hyper::Error, ReLateBound(DebruijnIndex(1), BoundRegion { var: 4, kind: BrAnon(4) })), []), BoringNoLocation), (Binder(OutlivesPredicate((), ReLateBound(DebruijnIndex(1), BoundRegion { var: 1, kind: BrAnon(1) })), []), BoringNoLocation)], member_constraints: [] }, certainty: Ambiguous, opaque_types: [], value: NormalizationResult { normalized_ty: hyper::Server> } } } thread 'rustc' panicked at 'Box', /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/compiler/rustc_errors/src/lib.rs:1516:9 stack backtrace: 0: 0x7fe954d256e0 - std::backtrace_rs::backtrace::libunwind::trace::h2119464896b45b57 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 1: 0x7fe954d256e0 - std::backtrace_rs::backtrace::trace_unsynchronized::h99b1d9b13310118f at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7fe954d256e0 - std::sys_common::backtrace::_print_fmt::hbe6d08ff752ef116 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/sys_common/backtrace.rs:65:5 3: 0x7fe954d256e0 - ::fmt::h6dd4a5ce328f2e15 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7fe954d815fe - core::fmt::write::h4593006cca976c9b at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/core/src/fmt/mod.rs:1209:17 5: 0x7fe954d15855 - std::io::Write::write_fmt::h75d064e88170c1b4 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/io/mod.rs:1682:15 6: 0x7fe954d254a5 - std::sys_common::backtrace::_print::hfe138f63dad5fb4c at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/sys_common/backtrace.rs:47:5 7: 0x7fe954d254a5 - std::sys_common::backtrace::print::he836ff7168a1f810 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/sys_common/backtrace.rs:34:9 8: 0x7fe954d282af - std::panicking::default_hook::{{closure}}::h4a0ff709ff17404d at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/panicking.rs:267:22 9: 0x7fe954d27fea - std::panicking::default_hook::h45465b3e5f51d8d9 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/panicking.rs:286:9 10: 0x7fe95765a811 - >::call_once::{shim:vtable#0} 11: 0x7fe954d28ad9 - as core::ops::function::Fn>::call::h2f9ca2b8279bca39 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/alloc/src/boxed.rs:2001:9 12: 0x7fe954d28ad9 - std::panicking::rust_panic_with_hook::he67ffd9c867b0e23 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/panicking.rs:692:13 13: 0x7fe958600831 - std[5adef4932411bbc2]::panicking::begin_panic::::{closure#0} 14: 0x7fe9585ff146 - std[5adef4932411bbc2]::sys_common::backtrace::__rust_end_short_backtrace::::{closure#0}, !> 15: 0x7fe958668d36 - std[5adef4932411bbc2]::panicking::begin_panic:: 16: 0x7fe9585fe0b6 - std[5adef4932411bbc2]::panic::panic_any:: 17: 0x7fe9585fdfcd - ::bug::<&alloc[7894da9ceb74614d]::string::String> 18: 0x7fe9585fda40 - ::bug::<&alloc[7894da9ceb74614d]::string::String> 19: 0x7fe9586b25cd - rustc_middle[d605453e4543da8c]::ty::context::tls::with_context_opt::::{closure#0}, ()>::{closure#0}, ()> 20: 0x7fe9586b2966 - rustc_middle[d605453e4543da8c]::util::bug::opt_span_bug_fmt:: 21: 0x7fe955f000b3 - rustc_middle[d605453e4543da8c]::util::bug::bug_fmt 22: 0x7fe9569482af - ::try_fold_ty 23: 0x7fe956cd6c0e - <&rustc_middle[d605453e4543da8c]::ty::list::List as rustc_middle[d605453e4543da8c]::ty::fold::TypeFoldable>::try_fold_with:: 24: 0x7fe956cd6845 - ::normalize:: 25: 0x7fe956cd5671 - rustc_traits[897ea7b5c414bd07]::type_op::type_op_normalize:: 26: 0x7fe956cd4b17 - ::enter_canonical_trait_query::>, rustc_middle[d605453e4543da8c]::ty::sty::FnSig, rustc_traits[897ea7b5c414bd07]::type_op::type_op_normalize> 27: 0x7fe956cd47c6 - rustc_traits[897ea7b5c414bd07]::type_op::type_op_normalize_fn_sig 28: 0x7fe956f3d307 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::try_execute_query::>>, core[b141a5f448cbfdbc]::result::Result<&rustc_middle[d605453e4543da8c]::infer::canonical::Canonical>, rustc_middle[d605453e4543da8c]::traits::query::NoSolution>>> 29: 0x7fe956f3cf0b - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::get_query:: 30: 0x7fe956f3ce4e - ::type_op_normalize_fn_sig 31: 0x7fe956cb8227 - ::type_op_method 32: 0x7fe956cb60d3 - as rustc_trait_selection[63ea626d0d9dd5f]::traits::query::type_op::QueryTypeOp>::fully_perform_into 33: 0x7fe9565ce82a - ::typeck_mir 34: 0x7fe9565463c2 - rustc_borrowck[bf646eb435ac545c]::type_check::type_check 35: 0x7fe956537878 - rustc_borrowck[bf646eb435ac545c]::nll::compute_regions 36: 0x7fe95650b6b8 - rustc_borrowck[bf646eb435ac545c]::do_mir_borrowck 37: 0x7fe956509fe0 - rustc_borrowck[bf646eb435ac545c]::mir_borrowck 38: 0x7fe956509971 - >::call_once 39: 0x7fe956afca05 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::try_execute_query::> 40: 0x7fe957523f0e - ::mir_borrowck 41: 0x7fe9565fa3e8 - ::prove_closure_bounds 42: 0x7fe9565d5c40 - ::typeck_mir 43: 0x7fe9565463c2 - rustc_borrowck[bf646eb435ac545c]::type_check::type_check 44: 0x7fe956537878 - rustc_borrowck[bf646eb435ac545c]::nll::compute_regions 45: 0x7fe95650b6b8 - rustc_borrowck[bf646eb435ac545c]::do_mir_borrowck 46: 0x7fe956509fe0 - rustc_borrowck[bf646eb435ac545c]::mir_borrowck 47: 0x7fe956509971 - >::call_once 48: 0x7fe956afca05 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::try_execute_query::> 49: 0x7fe957523f0e - ::mir_borrowck 50: 0x7fe9572ddd0c - rustc_hir_analysis[4ff8e3b274fef4a]::collect::type_of::type_of 51: 0x7fe956b155dc - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::get_query:: 52: 0x7fe956cf6291 - rustc_hir_analysis[4ff8e3b274fef4a]::check::check::check_mod_item_types 53: 0x7fe956ce3c05 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::try_execute_query::> 54: 0x7fe95707a8f9 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::get_query:: 55: 0x7fe957340abc - ::for_each_module:: 56: 0x7fe957045aa5 - rustc_hir_analysis[4ff8e3b274fef4a]::check_crate 57: 0x7fe9570455d7 - rustc_interface[a32f49e72690e02b]::passes::analysis 58: 0x7fe9573e6354 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::try_execute_query::>> 59: 0x7fe9573e6087 - rustc_query_system[e96ca7e2da71ed3f]::query::plumbing::get_query:: 60: 0x7fe9563a08e3 - ::enter::> 61: 0x7fe95639c826 - ::enter::, rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>> 62: 0x7fe956393edc - rustc_span[f76be64242de1050]::with_source_map::, rustc_interface[a32f49e72690e02b]::interface::run_compiler, rustc_driver[2feadf6a045f69f8]::run_compiler::{closure#1}>::{closure#0}::{closure#1}> 63: 0x7fe9563938a2 - >::set::, rustc_driver[2feadf6a045f69f8]::run_compiler::{closure#1}>::{closure#0}, core[b141a5f448cbfdbc]::result::Result<(), rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>> 64: 0x7fe956391fcf - std[5adef4932411bbc2]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver[2feadf6a045f69f8]::run_compiler::{closure#1}>::{closure#0}, core[b141a5f448cbfdbc]::result::Result<(), rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b141a5f448cbfdbc]::result::Result<(), rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>> 65: 0x7fe956391e3f - <::spawn_unchecked_, rustc_driver[2feadf6a045f69f8]::run_compiler::{closure#1}>::{closure#0}, core[b141a5f448cbfdbc]::result::Result<(), rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b141a5f448cbfdbc]::result::Result<(), rustc_errors[3c325fb77ff98e3b]::ErrorGuaranteed>>::{closure#1} as core[b141a5f448cbfdbc]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 66: 0x7fe954d325f3 - as core::ops::function::FnOnce>::call_once::hecb24e4d2d235ab4 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/alloc/src/boxed.rs:1987:9 67: 0x7fe954d325f3 - as core::ops::function::FnOnce>::call_once::h05e0c493dc58e461 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/alloc/src/boxed.rs:1987:9 68: 0x7fe954d325f3 - std::sys::unix::thread::Thread::new::thread_start::h6913f7fb82d0a425 at /rustc/4b8f4319954ff2642690b9e5cbe4af352d095bf6/library/std/src/sys/unix/thread.rs:108:17 69: 0x7fe954c04609 - start_thread 70: 0x7fe954b27133 - clone 71: 0x0 - note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md note: rustc 1.66.0-nightly (4b8f43199 2022-10-19) running on x86_64-unknown-linux-gnu note: compiler flags: --crate-type bin -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 note: some of the compiler flags provided by cargo are hidden query stack during panic: #0 [type_op_normalize_fn_sig] normalizing `([hyper::server::server::Server>]; c_variadic: false)->> as core::future::into_future::IntoFuture>::IntoFuture` #1 [mir_borrowck] borrow-checking `iceice::{closure#0}` #2 [mir_borrowck] borrow-checking `iceice` #3 [type_of] computing type of `iceice::{opaque#0}` #4 [check_mod_item_types] checking item types in top-level module #5 [analysis] running analysis passes on this crate end of query stack For more information about this error, try `rustc --explain E0425`. ```

aliemjay commented 2 years ago

How could an ambiguity error be raised when the canonical request has no inference variables? This looks interesting.

compiler-errors commented 2 years ago

It's related to the variable name resolution error being emitted earlier, so maybe the inference context being tainted by errors causes something about evaluation to get messed up.

hellow554 commented 2 years ago

Here's a cve without any external dependencies. Not quiet small, but it does the job.

mod hyper {
    use std::{fmt::Debug, future::Future, marker::PhantomData, pin::Pin, task::Poll};

    pub trait HttpBody {
        type Error;
    }
    impl HttpBody for () {
        // don't implement `Error` here for the ICE
    }

    pub struct Server<I, S>(I, S);

    pub fn serve<I, S>(_: S) -> Server<I, S> {
        todo!()
    }

    impl<S, B> Future for Server<(), S>
    where
        S: MakeServiceRef<(), (), ResBody = B>,
        B: HttpBody,
        B::Error: Debug,
    {
        type Output = ();

        fn poll(self: Pin<&mut Self>, _: &mut std::task::Context<'_>) -> Poll<Self::Output> {
            todo!()
        }
    }

    pub trait MakeServiceRef<Target, ReqBody> {
        type ResBody;
    }

    impl<T, S> MakeServiceRef<(), ()> for T
    where
        T: for<'a> Service<&'a (), Response = S>,
        S: Service<()>,
    {
        type ResBody = ();
    }

    pub struct MakeServiceFn<F>(pub F);
    pub struct ServiceFn<F, R>(pub PhantomData<(F, R)>);

    pub trait Service<Request> {
        type Response;
    }

    impl<'t, F, Ret, Target, Svc> Service<&'t Target> for MakeServiceFn<F>
    where
        F: Fn() -> Ret,
        Ret: Future<Output = Result<Svc, ()>>,
    {
        type Response = Svc;
    }

    impl<F, ReqBody, Ret, ResBody, E> Service<ReqBody> for ServiceFn<F, ReqBody>
    where
        F: Fn() -> Ret,
        Ret: Future<Output = Result<ResBody, E>>,
    {
        type Response = ResBody;
    }
}

async fn smarvice() -> Result<(), ()> {
    Ok(())
}

fn service_fn<F, R, S>(f: F) -> hyper::ServiceFn<F, R>
where
    F: Fn() -> S,
{
    hyper::ServiceFn(std::marker::PhantomData)
}

async fn iceice() {
    let service = hyper::MakeServiceFn(|| async { Ok::<_, ()>(service_fn(|| smarvice())) });
    hyper::serve::<(), _>(service).await;
}

fn main() {}
aliemjay commented 2 years ago

Minimized: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=094c295011fa93fe6abefbbe1674496b

trait SendFuture: Send {
    type Output;
}

impl<Fut: Send> SendFuture for Fut {
    type Output = ();
}

async fn broken_fut() {
    ident_error;
}

// triggers normalization of `<Fut as SendFuture>::Output`,
// which requires `Fut: Send`.
fn normalize<Fut: SendFuture>(_: Fut, _: Fut::Output) {}

async fn iceice<A, B>() // <- async fn is necessary
where
    A: Send,
    B: Send, // <- a second bound
{
    normalize(broken_fut(), ());
}

@rustbot label S-bug-has-mcve

hellow554 commented 2 years ago

@aliemjay interesting enough you seem to trigger the ICE in a different way than me? You're using the ident_error token, I use an incomplete trait impl.

Maybe it's worth to test a possible solution to both inputs?

compiler-errors commented 2 years ago

I'm pretty sure I understand this error now.

Either via @aliemjay's solution of having a async fn with an error in its body, or via @hellow554's solution of having a missing associated type , we end up trying to check a trait bound on a [type error] (error) type in order to normalize a type inside a closure signature, which ends up evaluating as ambiguous.

However, we don't handle ambiguities properly with the normalization query call. I took a stab at fixing this in #102858, and I extended it a bit to also fix these cases, too.