Repository: rust
Issue: opentelemetry tower_layer compiler panic
Labels: I-ICE,T-compiler,A-incr-comp,C-bug

<!--
Thank you for finding an Internal Compiler Error! 🧊  If possible, try to provide
a minimal verifiable example. You can read "Rust Bug Minimization Patterns" for
how to create smaller examples.
http://blog.pnkfx.org/blog/2019/11/18/rust-bug-minimization-patterns/
-->
I'm new to Rust (I started about one week ago); however I'm filing this issue only because the compiler outputs "this is a bug". I Hope this can help!

## Background
Implemented a tower layer which uses pin project by following [this](https://github.com/tower-rs/tower/blob/master/guides/building-a-middleware-from-scratch.md) guide.

The code has worked fine until I decided to introduce a small change in the code. So, below you'll find the "before" and "after" implementations

### Code

##### BEFORE
```Rust
use std::{
    pin::Pin,
    task::{Context, Poll},
};

use futures::Future;
use hyper::{Body, Response};
use opentelemetry::{
    global::{self, BoxedTracer},
    trace::{FutureExt, SpanRef, TraceContextExt, Tracer, WithContext},
    Context as OTLPCtx, KeyValue,
};
use pin_project::pin_project;
use tower::Service;

pub struct TracerService<S> {
    inner: S,
    tracer: BoxedTracer,
}

impl<S> TracerService<S> {
    pub fn new(inner: S) -> Self {
        let app_name = std::env::var("APP_NAME").unwrap_or("UNKNOWN".into());
        TracerService {
            inner,
            tracer: global::tracer(app_name),
        }
    }
}

impl<S> Service<hyper::Request<hyper::Body>> for TracerService<S>
where
    S: Service<hyper::Request<hyper::Body>, Response = hyper::Response<hyper::Body>>,
    S::Error: Into<BoxError>,
{
    type Response = hyper::Response<hyper::Body>;
    type Error = BoxError;
    type Future = ResponseFuture<WithContext<S::Future>>;

    fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
        self.inner.poll_ready(cx).map_err(Into::into)
    }

    fn call(&mut self, request: hyper::Request<hyper::Body>) -> Self::Future {
        let span_name = format!("{} {}", request.method().as_str(), request.uri().path());
        let span = self.tracer.start(span_name);
        let otel_cx = OTLPCtx::current_with_span(span);
        let b_ctx = otel_cx.clone();
        let response_future = self.inner.call(request).with_context(otel_cx);
        ResponseFuture {
            response_future: response_future,
            ctx: b_ctx,
        }
    }
}

#[pin_project]
pub struct ResponseFuture<F> {
    #[pin]
    response_future: F,
    ctx: OTLPCtx,
}

impl<F, Error> Future for ResponseFuture<F>
where
    F: Future<Output = Result<hyper::Response<hyper::Body>, Error>>,

    Error: Into<BoxError>,
{
    type Output = Result<hyper::Response<hyper::Body>, BoxError>;
    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
        let this = self.project();
        match this.response_future.poll(cx) {
            Poll::Ready(result) => {
                return match result.map_err(Into::into) {
                    Ok(response) => {
                        let span = this.ctx.span();
                        decorate_span(span, &response);
                        Poll::Ready(Ok(response))
                    }
                    Err(err) => Poll::Ready(Err(err.into())),
                };
            }
            Poll::Pending => Poll::Pending,
        }
    }
}

fn decorate_span(span: SpanRef<'_>, response: &Response<Body>) {
    let status = response.status();
    let status_str = status.as_str();
    let is_error = status.as_u16() > 399;
    let error_tag = KeyValue {
        key: "error".into(),
        value: is_error.into(),
    };
    let status_tag = KeyValue {
        key: "status".into(),
        value: String::from(status_str).into(),
    };
    span.set_attribute(error_tag);
    span.set_attribute(status_tag);
    span.end();
}

pub type BoxError = Box<dyn std::error::Error + Send + Sync>;
```
##### AFTER
Only the changed parts are shown
```Rust

impl<S> Service<hyper::Request<hyper::Body>> for TracerService<S>
...
    fn call(&mut self, request: hyper::Request<hyper::Body>) -> Self::Future {
        let span_name = format!("{} {}", request.method().as_str(), request.uri().path());
        let span = self.tracer.start(span_name);
        let otel_cx = OTLPCtx::current_with_span(span);
        let response_future = self.inner.call(request).with_context(otel_cx);
        ResponseFuture {
            response_future: response_future,
            // REMOVED    ctx: b_ctx,
        }
    }
...

#[pin_project]
pub struct ResponseFuture<F> {
    #[pin]
    response_future: F,
    // REMOVED ctx: OTLPCtx,
}

impl<F, Error> Future for ResponseFuture<F>
where
    F: Future<Output = Result<hyper::Response<hyper::Body>, Error>>,

    Error: Into<BoxError>,
{
    type Output = Result<hyper::Response<hyper::Body>, BoxError>;
    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
        let this = self.project();
        match this.response_future.poll(cx) {
            Poll::Ready(result) => {
                return match result.map_err(Into::into) {
                    Ok(response) => {
                        // ADD
                        let otlp_cx = OTLPCtx::current();
                        let span = otlp_cx.span();
                        decorate_span(span, &response);
                        Poll::Ready(Ok(response))
                    }
                    Err(err) => Poll::Ready(Err(err.into())),
                };
            }
            Poll::Pending => Poll::Pending,
        }
    }
}
```

### Meta
<!--
If you're using the stable version of the compiler, you should also check if the
bug also exists in the beta or nightly versions.
-->

`rustc --version --verbose`:
```
rustc 1.73.0 (cc66ad468 2023-10-03)
binary: rustc
commit-hash: cc66ad468955717ab92600c770da8c1601a4ff33
commit-date: 2023-10-03
host: x86_64-unknown-linux-gnu
release: 1.73.0
LLVM version: 17.0.2
```

### Error output

```
SEE BACKTRACE
```

<!--
Include a backtrace in the code block by setting `RUST_BACKTRACE=1` in your
environment. E.g. `RUST_BACKTRACE=1 cargo build`.
-->
<details><summary><strong>Backtrace</strong></summary>
<p>

```
thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/dep_node.rs:181:17:
Failed to extract DefId: opt_local_def_id_to_hir_id 7290871ab612167b-16c2654baa403be5
stack backtrace:
   0: rust_begin_unwind
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
   1: core::panicking::panic_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
   2: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id::{closure#0}
   3: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id
   4: <rustc_query_impl::plumbing::query_callback<rustc_query_impl::query_impl::opt_local_def_id_to_hir_id::QueryType>::{closure#0} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind>)>>::call_once
   5: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
   6: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
   7: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
   8: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
   9: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  10: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  11: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  12: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  13: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  14: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  15: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  16: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  17: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  18: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  19: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Predicate>>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
  20: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
  21: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
  22: <dyn rustc_infer::traits::engine::TraitEngine as rustc_infer::traits::engine::TraitEngineExt>::select_all_or_error
  23: rustc_traits::codegen::codegen_select_candidate
      [... omitted 3 frames ...]
  24: rustc_ty_utils::instance::resolve_instance
      [... omitted 1 frame ...]
  25: rustc_monomorphize::collector::collect_used_items
  26: rustc_monomorphize::collector::collect_items_rec
  27: rustc_monomorphize::collector::collect_items_rec
  28: rustc_monomorphize::collector::collect_items_rec
  29: rustc_monomorphize::collector::collect_items_rec
  30: rustc_monomorphize::collector::collect_items_rec
  31: rustc_monomorphize::collector::collect_items_rec
  32: rustc_monomorphize::collector::collect_items_rec
  33: rustc_monomorphize::collector::collect_items_rec
  34: rustc_monomorphize::collector::collect_items_rec
  35: rustc_monomorphize::collector::collect_items_rec
  36: rustc_monomorphize::collector::collect_items_rec
  37: rustc_data_structures::sync::par_for_each_in::<alloc::vec::Vec<rustc_middle::mir::mono::MonoItem>, rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
  38: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
  39: rustc_monomorphize::collector::collect_crate_mono_items
  40: rustc_monomorphize::partitioning::collect_and_partition_mono_items
      [... omitted 2 frames ...]
  41: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  42: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  43: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
  44: rustc_interface::passes::start_codegen
  45: <rustc_middle::ty::context::GlobalCtxt>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_span::ErrorGuaranteed>>
  46: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: 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.73.0 (cc66ad468 2023-10-03) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `hyper::server::conn::upgrades::UpgradeableConnection<hyper::server::tcp::addr_stream::AddrStream, middleware::tracing::service::TracerService<tower_http::auth::async_require_authorization::AsyncRequireAuthorization<warp::filter::service::FilteredService<warp::filter::boxed::BoxedFilter<(http::response::Response<hyper::body::body::Body>,)>>, middleware::authentication::JWTAuth>>, hyper::common::exec::Exec>: core::marker::Send`
#1 [codegen_select_candidate] computing candidate for `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>`
#2 [resolve_instance] resolving instance `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>::into_future`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
there was a panic while trying to force a dep node
try_mark_green dep node stack:
#0 opt_def_kind(thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/dep_node.rs:181:17:
Failed to extract DefId: opt_def_kind 7290871ab612167b-16c2654baa403be5
stack backtrace:
   0: rust_begin_unwind
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
   1: core::panicking::panic_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
   2: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id::{closure#0}
   3: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id
   4: <rustc_middle::dep_graph::dep_node::DepKind as rustc_query_system::dep_graph::DepKind>::debug_node
   5: core::fmt::rt::Argument::fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/rt.rs:138:9
   6: core::fmt::write
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/mod.rs:1094:21
   7: std::io::Write::write_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/mod.rs:1714:15
   8: <&std::io::stdio::Stderr as std::io::Write>::write_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:945:9
   9: <std::io::stdio::Stderr as std::io::Write>::write_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:919:9
  10: std::io::stdio::print_to
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:1018:21
  11: std::io::stdio::_eprint
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:1106:5
  12: rustc_query_system::dep_graph::graph::print_markframe_trace::<rustc_middle::dep_graph::dep_node::DepKind>
  13: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  14: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  15: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  16: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  17: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  18: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  19: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  20: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  21: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  22: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  23: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  24: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  25: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  26: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  27: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Predicate>>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
  28: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
  29: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
  30: <dyn rustc_infer::traits::engine::TraitEngine as rustc_infer::traits::engine::TraitEngineExt>::select_all_or_error
  31: rustc_traits::codegen::codegen_select_candidate
      [... omitted 3 frames ...]
  32: rustc_ty_utils::instance::resolve_instance
      [... omitted 1 frame ...]
  33: rustc_monomorphize::collector::collect_used_items
  34: rustc_monomorphize::collector::collect_items_rec
  35: rustc_monomorphize::collector::collect_items_rec
  36: rustc_monomorphize::collector::collect_items_rec
  37: rustc_monomorphize::collector::collect_items_rec
  38: rustc_monomorphize::collector::collect_items_rec
  39: rustc_monomorphize::collector::collect_items_rec
  40: rustc_monomorphize::collector::collect_items_rec
  41: rustc_monomorphize::collector::collect_items_rec
  42: rustc_monomorphize::collector::collect_items_rec
  43: rustc_monomorphize::collector::collect_items_rec
  44: rustc_monomorphize::collector::collect_items_rec
  45: rustc_data_structures::sync::par_for_each_in::<alloc::vec::Vec<rustc_middle::mir::mono::MonoItem>, rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
  46: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
  47: rustc_monomorphize::collector::collect_crate_mono_items
  48: rustc_monomorphize::partitioning::collect_and_partition_mono_items
      [... omitted 2 frames ...]
  49: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  50: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  51: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
  52: rustc_interface::passes::start_codegen
  53: <rustc_middle::ty::context::GlobalCtxt>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_span::ErrorGuaranteed>>
  54: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: 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.73.0 (cc66ad468 2023-10-03) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `hyper::server::conn::upgrades::UpgradeableConnection<hyper::server::tcp::addr_stream::AddrStream, middleware::tracing::service::TracerService<tower_http::auth::async_require_authorization::AsyncRequireAuthorization<warp::filter::service::FilteredService<warp::filter::boxed::BoxedFilter<(http::response::Response<hyper::body::body::Body>,)>>, middleware::authentication::JWTAuth>>, hyper::common::exec::Exec>: core::marker::Send`
#1 [codegen_select_candidate] computing candidate for `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>`
#2 [resolve_instance] resolving instance `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>::into_future`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: could not compile `ruster` (bin "ruster")
```

</p>
</details>