Skip to content

rustc panic with unsize coercion #141544

Open
@DusterTheFirst

Description

@DusterTheFirst

Code

This was the best way I could minimize the example, removing the dependencies from it was proving to be challening, so I decided to send this version over in the hopes that it is already helpful.

[dependencies]
iced    = { version = "0.13.1", features = ["tokio"] }
mavlink = { version = "0.13.2", default-features = false, features = ["ardupilotmega", "std", "tokio-1"], git = "https://github.com/dusterthefirst/rust-mavlink", branch = "fix-features-async" }
use std::{
    future,
    pin::{Pin, pin},
    sync::Arc,
};

use iced::{
    futures::Stream,
    stream,
};
use mavlink::{
    AsyncMavConnection,
    minimal::MavMessage,
};

fn main() {}

fn mavlink_worker() -> impl Stream<Item = ()> {
    stream::channel(0, |_| async move {
        let connection: Option<
            Arc<dyn AsyncMavConnection<MavMessage> + Send + Sync + 'static>,
        > = None;

        let connection_fut = if let Some(connection) = connection.clone() {
            pin!(async move { connection.recv().await })
                as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
        } else {
            pin!(future::pending()) as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
        };
    })
}

Meta

ICE exists on both nightly and beta.

rustc +nightly --version --verbose:

rustc 1.89.0-nightly (5e16c6620 2025-05-24)
binary: rustc
commit-hash: 5e16c662062fd6dee91f0fe2a1580483488d80cf
commit-date: 2025-05-24
host: x86_64-unknown-linux-gnu
release: 1.89.0-nightly
LLVM version: 20.1.5

rustc --version --verbose:

rustc 1.88.0-beta.3 (5dadfd5c4 2025-05-11)
binary: rustc
commit-hash: 5dadfd5c417f0b66816cb7ca662859e2c8751fb3
commit-date: 2025-05-11
host: x86_64-unknown-linux-gnu
release: 1.88.0-beta.3
LLVM version: 20.1.4

Error output

   Compiling mavlink v0.13.2 (https://github.com/dusterthefirst/rust-mavlink?branch=fix-features-async#92124b34)
   Compiling rustc-ice-2025-05-25 v0.1.0 (/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25)
warning: unused variable: `connection_fut`
  --> src/main.rs:24:13
   |
24 |         let connection_fut = if let Some(connection) = connection.clone() {
   |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection_fut`
   |
   = note: `#[warn(unused_variables)]` on by default


thread 'rustc' panicked at compiler/rustc_mir_transform/src/validate.rs:80:25:
broken MIR in Item(DefId(0:19 ~ rustc_ice_2025_05_25[0836]::mavlink_worker::{closure#0}::{closure#0})) (after phase change to runtime-optimized) at bb4[0]:
Unsize coercion, but `std::pin::Pin<&mut {async block@src/main.rs:25:18: 25:28}>` isn't coercible to `std::pin::Pin<&mut dyn std::future::Future<Output = std::result::Result<(mavlink::MavHeader, mavlink::minimal::MavMessage), mavlink::error::MessageReadError>> + std::marker::Send + std::marker::Sync>`
stack backtrace:
   0:     0x7f79c5d639f3 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hea398c448c2c6439
   1:     0x7f79c6405c07 - core::fmt::write::h821daa852048a52f
   2:     0x7f79c7509311 - std::io::Write::write_fmt::h2eb27dbc2224a2bb
   3:     0x7f79c5d63852 - std::sys::backtrace::BacktraceLock::print::h2fd056ff2895ce9b
   4:     0x7f79c5d6744a - std::panicking::default_hook::{{closure}}::hf984d4d0c0d828d9
   5:     0x7f79c5d66fcf - std::panicking::default_hook::hd75e9759dcf29e08
   6:     0x7f79c4d92273 - std[48e0230fd421c942]::panicking::update_hook::<alloc[99d5d25e398ced5b]::boxed::Box<rustc_driver_impl[e3bb9c1d65585b3c]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7f79c5d67cc3 - std::panicking::rust_panic_with_hook::h5688798346df9866
   8:     0x7f79c5d679ba - std::panicking::begin_panic_handler::{{closure}}::h3f35185a23d4049f
   9:     0x7f79c5d63ec9 - std::sys::backtrace::__rust_end_short_backtrace::hd1a077257275b53c
  10:     0x7f79c5d6767d - __rustc[764efdf202547135]::rust_begin_unwind
  11:     0x7f79c26874a0 - core::panicking::panic_fmt::h92f6f5e5e18fa91c
  12:     0x7f79c3b50d82 - <rustc_mir_transform[fb5a8b53b7b3d0bb]::validate::CfgChecker>::fail::<alloc[99d5d25e398ced5b]::string::String>
  13:     0x7f79c7571bd9 - <rustc_mir_transform[fb5a8b53b7b3d0bb]::validate::Validator as rustc_mir_transform[fb5a8b53b7b3d0bb]::pass_manager::MirPass>::run_pass
  14:     0x7f79c6403e8e - rustc_mir_transform[fb5a8b53b7b3d0bb]::pass_manager::run_passes_inner
  15:     0x7f79c6dde207 - rustc_mir_transform[fb5a8b53b7b3d0bb]::run_optimization_passes
  16:     0x7f79c6ddbafb - rustc_mir_transform[fb5a8b53b7b3d0bb]::optimized_mir
  17:     0x7f79c6ddb69d - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 8usize]>>
  18:     0x7f79c66519bf - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefIdCache<rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  19:     0x7f79c664e2ca - rustc_query_impl[b57a309be93d39d6]::query_impl::optimized_mir::get_query_incr::__rust_end_short_backtrace
  20:     0x7f79c544586b - <rustc_middle[f090872c12cd4c0]::ty::context::TyCtxt>::coroutine_layout
  21:     0x7f79c6b7c766 - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  22:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  23:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  24:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  25:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  26:     0x7f79c6b6cf1a - <core[950724862b375e6b]::iter::adapters::GenericShunt<core[950724862b375e6b]::iter::adapters::by_ref_sized::ByRefSized<core[950724862b375e6b]::iter::adapters::map::Map<core[950724862b375e6b]::slice::iter::Iter<rustc_middle[f090872c12cd4c0]::ty::VariantDef>, rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached::{closure#20}>>, core[950724862b375e6b]::result::Result<core[950724862b375e6b]::convert::Infallible, &rustc_middle[f090872c12cd4c0]::ty::layout::LayoutError>> as core[950724862b375e6b]::iter::traits::iterator::Iterator>::next
  27:     0x7f79c6b74afd - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  28:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  29:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  30:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  31:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  32:     0x7f79c6b6cf1a - <core[950724862b375e6b]::iter::adapters::GenericShunt<core[950724862b375e6b]::iter::adapters::by_ref_sized::ByRefSized<core[950724862b375e6b]::iter::adapters::map::Map<core[950724862b375e6b]::slice::iter::Iter<rustc_middle[f090872c12cd4c0]::ty::VariantDef>, rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached::{closure#20}>>, core[950724862b375e6b]::result::Result<core[950724862b375e6b]::convert::Infallible, &rustc_middle[f090872c12cd4c0]::ty::layout::LayoutError>> as core[950724862b375e6b]::iter::traits::iterator::Iterator>::next
  33:     0x7f79c6b74a3e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  34:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  35:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  36:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  37:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  38:     0x7f79c6b6cf1a - <core[950724862b375e6b]::iter::adapters::GenericShunt<core[950724862b375e6b]::iter::adapters::by_ref_sized::ByRefSized<core[950724862b375e6b]::iter::adapters::map::Map<core[950724862b375e6b]::slice::iter::Iter<rustc_middle[f090872c12cd4c0]::ty::VariantDef>, rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached::{closure#20}>>, core[950724862b375e6b]::result::Result<core[950724862b375e6b]::convert::Infallible, &rustc_middle[f090872c12cd4c0]::ty::layout::LayoutError>> as core[950724862b375e6b]::iter::traits::iterator::Iterator>::next
  39:     0x7f79c6b74a3e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  40:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  41:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  42:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  43:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  44:     0x7f79c6b6d2ca - <core[950724862b375e6b]::iter::adapters::GenericShunt<core[950724862b375e6b]::iter::adapters::by_ref_sized::ByRefSized<core[950724862b375e6b]::iter::adapters::map::Map<core[950724862b375e6b]::slice::iter::Iter<rustc_middle[f090872c12cd4c0]::ty::VariantDef>, rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached::{closure#20}>>, core[950724862b375e6b]::result::Result<core[950724862b375e6b]::convert::Infallible, &rustc_middle[f090872c12cd4c0]::ty::layout::LayoutError>> as core[950724862b375e6b]::iter::traits::iterator::Iterator>::next
  45:     0x7f79c6b74a3e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  46:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  47:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  48:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  49:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  50:     0x7f79c6b701c0 - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  51:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  52:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  53:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  54:     0x7f79c6b6cf1a - <core[950724862b375e6b]::iter::adapters::GenericShunt<core[950724862b375e6b]::iter::adapters::by_ref_sized::ByRefSized<core[950724862b375e6b]::iter::adapters::map::Map<core[950724862b375e6b]::slice::iter::Iter<rustc_middle[f090872c12cd4c0]::ty::VariantDef>, rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached::{closure#20}>>, core[950724862b375e6b]::result::Result<core[950724862b375e6b]::convert::Infallible, &rustc_middle[f090872c12cd4c0]::ty::layout::LayoutError>> as core[950724862b375e6b]::iter::traits::iterator::Iterator>::next
  55:     0x7f79c6b74a3e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of_uncached
  56:     0x7f79c6b6f74e - rustc_ty_utils[b24a67c8ac777e43]::layout::layout_of
  57:     0x7f79c6b6f6ac - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>
  58:     0x7f79c658b3bc - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::DefaultCache<rustc_middle[f090872c12cd4c0]::ty::PseudoCanonicalInput<rustc_middle[f090872c12cd4c0]::ty::Ty>, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  59:     0x7f79c658a065 - rustc_query_impl[b57a309be93d39d6]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  60:     0x7f79c724eb18 - <rustc_mir_transform[fb5a8b53b7b3d0bb]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[fb5a8b53b7b3d0bb]::pass_manager::MirLint>::run_lint
  61:     0x7f79c640c427 - rustc_mir_transform[fb5a8b53b7b3d0bb]::run_analysis_to_runtime_passes
  62:     0x7f79c6cbaa65 - rustc_mir_transform[fb5a8b53b7b3d0bb]::mir_drops_elaborated_and_const_checked
  63:     0x7f79c6cba435 - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 8usize]>>
  64:     0x7f79c66267a4 - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_data_structures[cbea762472d7c174]::vec_cache::VecCache<rustc_span[d6bc2b2686998632]::def_id::LocalDefId, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[dce25d0b4ac64ba5]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  65:     0x7f79c664f052 - rustc_query_impl[b57a309be93d39d6]::query_impl::mir_drops_elaborated_and_const_checked::get_query_incr::__rust_end_short_backtrace
  66:     0x7f79c695e8d0 - rustc_interface[91e6f6dc16a607e]::passes::run_required_analyses
  67:     0x7f79c741251e - rustc_interface[91e6f6dc16a607e]::passes::analysis
  68:     0x7f79c74124f5 - rustc_query_impl[b57a309be93d39d6]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[b57a309be93d39d6]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 0usize]>>
  69:     0x7f79c740d104 - rustc_query_system[dce25d0b4ac64ba5]::query::plumbing::try_execute_query::<rustc_query_impl[b57a309be93d39d6]::DynamicConfig<rustc_query_system[dce25d0b4ac64ba5]::query::caches::SingleCache<rustc_middle[f090872c12cd4c0]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[b57a309be93d39d6]::plumbing::QueryCtxt, true>
  70:     0x7f79c740ca28 - rustc_query_impl[b57a309be93d39d6]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  71:     0x7f79c767d707 - rustc_interface[91e6f6dc16a607e]::passes::create_and_enter_global_ctxt::<core[950724862b375e6b]::option::Option<rustc_interface[91e6f6dc16a607e]::queries::Linker>, rustc_driver_impl[e3bb9c1d65585b3c]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  72:     0x7f79c7544fe6 - rustc_interface[91e6f6dc16a607e]::interface::run_compiler::<(), rustc_driver_impl[e3bb9c1d65585b3c]::run_compiler::{closure#0}>::{closure#1}
  73:     0x7f79c74fff7e - std[48e0230fd421c942]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[91e6f6dc16a607e]::util::run_in_thread_with_globals<rustc_interface[91e6f6dc16a607e]::util::run_in_thread_pool_with_globals<rustc_interface[91e6f6dc16a607e]::interface::run_compiler<(), rustc_driver_impl[e3bb9c1d65585b3c]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  74:     0x7f79c75003f4 - <<std[48e0230fd421c942]::thread::Builder>::spawn_unchecked_<rustc_interface[91e6f6dc16a607e]::util::run_in_thread_with_globals<rustc_interface[91e6f6dc16a607e]::util::run_in_thread_pool_with_globals<rustc_interface[91e6f6dc16a607e]::interface::run_compiler<(), rustc_driver_impl[e3bb9c1d65585b3c]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[950724862b375e6b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  75:     0x7f79c75017eb - std::sys::pal::unix::thread::Thread::new::thread_start::h296d0d4d2c083a52
  76:     0x7f79c127f1d4 - start_thread
  77:     0x7f79c1301cec - __clone3
  78:                0x0 - <unknown>

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.88.0-beta.3 (5dadfd5c4 2025-05-11) 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 [optimized_mir] optimizing MIR for `mavlink_worker::{closure#0}::{closure#0}`
#1 [layout_of] computing layout of `{async block@src/main.rs:19:28: 19:38}`
... and 8 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: error performing operation: fully_perform
  --> src/main.rs:25:13
   |
25 | /             pin!(async move { connection.recv().await })
26 | |                 as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
   | |___________________________________________________________________^
   |
note: delayed at /rustc/5dadfd5c417f0b66816cb7ca662859e2c8751fb3/compiler/rustc_trait_selection/src/traits/query/type_op/custom.rs:87:25 - disabled backtrace
  --> src/main.rs:25:13
   |
25 | /             pin!(async move { connection.recv().await })
26 | |                 as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
   | |___________________________________________________________________^

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.88.0-beta.3 (5dadfd5c4 2025-05-11) 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:
end of query stack
warning: `rustc-ice-2025-05-25` (bin "rustc-ice-2025-05-25") generated 1 warning
error: could not compile `rustc-ice-2025-05-25` (bin "rustc-ice-2025-05-25"); 1 warning emitted

Caused by:
  process didn't exit successfully: `/home/dusterthefirst/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/bin/rustc --crate-name rustc_ice_2025_05_25 --edition=2024 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=97 --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=472b7fe0e2c6e784 -C extra-filename=-096534ea6f86c79d --out-dir /home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps -C incremental=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/incremental -L dependency=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps --extern iced=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps/libiced-9be6de8c3cc5b6a1.rlib --extern mavlink=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps/libmavlink-c635e4ebd00d118f.rlib` (exit status: 101)
Backtrace

thread 'rustc' panicked at compiler/rustc_mir_transform/src/validate.rs:80:25:
broken MIR in Item(DefId(0:19 ~ rustc_ice_2025_05_25[0836]::mavlink_worker::{closure#0}::{closure#0})) (after phase change to runtime-optimized) at bb4[0]:
Unsize coercion, but `std::pin::Pin<&mut {async block@src/main.rs:25:18: 25:28}>` isn't coercible to `std::pin::Pin<&mut dyn std::future::Future<Output = std::result::Result<(mavlink::MavHeader, mavlink::minimal::MavMessage), mavlink::error::MessageReadError>> + std::marker::Send + std::marker::Sync>`
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <rustc_mir_transform::validate::CfgChecker>::fail::<alloc::string::String>
   3: <rustc_mir_transform::validate::Validator as rustc_mir_transform::pass_manager::MirPass>::run_pass
   4: rustc_mir_transform::pass_manager::run_passes_inner
   5: rustc_mir_transform::run_optimization_passes
   6: rustc_mir_transform::optimized_mir
      [... omitted 1 frame ...]
   7: <rustc_middle::ty::context::TyCtxt>::coroutine_layout
   8: rustc_ty_utils::layout::layout_of_uncached
   9: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  10: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
  11: rustc_ty_utils::layout::layout_of_uncached
  12: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  13: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
  14: rustc_ty_utils::layout::layout_of_uncached
  15: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  16: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
  17: rustc_ty_utils::layout::layout_of_uncached
  18: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  19: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
  20: rustc_ty_utils::layout::layout_of_uncached
  21: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  22: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  23: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
  24: rustc_ty_utils::layout::layout_of_uncached
  25: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  26: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  27: rustc_mir_transform::run_analysis_to_runtime_passes
  28: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  29: rustc_interface::passes::run_required_analyses
  30: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  31: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  32: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
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.88.0-beta.3 (5dadfd5c4 2025-05-11) 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 [optimized_mir] optimizing MIR for `mavlink_worker::{closure#0}::{closure#0}`
#1 [layout_of] computing layout of `{async block@src/main.rs:19:28: 19:38}`
#2 [layout_of] computing layout of `core::option::Option<{async block@src/main.rs:19:28: 19:38}>`
#3 [layout_of] computing layout of `futures_util::stream::once::Once<{async block@src/main.rs:19:28: 19:38}>`
#4 [layout_of] computing layout of `futures_util::stream::stream::filter_map::FilterMap<futures_util::stream::once::Once<{async block@src/main.rs:19:28: 19:38}>, {async block@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}::{closure#0}}, {closure@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}}>`
#5 [layout_of] computing layout of `futures_util::stream::select_with_strategy::SelectWithStrategy<futures_channel::mpsc::Receiver<()>, futures_util::stream::stream::filter_map::FilterMap<futures_util::stream::once::Once<{async block@src/main.rs:19:28: 19:38}>, {async block@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}::{closure#0}}, {closure@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}}>, for<'a> fn(&'a mut futures_util::stream::select_with_strategy::PollNext) -> futures_util::stream::select_with_strategy::PollNext, futures_util::stream::select_with_strategy::PollNext>`
#6 [layout_of] computing layout of `futures_util::stream::select_with_strategy::SelectWithStrategy<futures_channel::mpsc::Receiver<()>, futures_util::stream::stream::filter_map::FilterMap<futures_util::stream::once::Once<{async block@src/main.rs:19:28: 19:38}>, {async block@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}::{closure#0}}, {closure@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}}>, for<'a> fn(&'a mut futures_util::stream::select_with_strategy::PollNext) -> futures_util::stream::select_with_strategy::PollNext, futures_util::stream::select_with_strategy::PollNext>`
#7 [layout_of] computing layout of `futures_util::stream::select::Select<futures_channel::mpsc::Receiver<()>, futures_util::stream::stream::filter_map::FilterMap<futures_util::stream::once::Once<{async block@src/main.rs:19:28: 19:38}>, {async block@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}::{closure#0}}, {closure@iced_futures::stream::channel<(), {async block@src/main.rs:19:28: 19:38}, {closure@src/main.rs:19:24: 19:27}>::{closure#0}}>>`
#8 [mir_drops_elaborated_and_const_checked] elaborating drops for `mavlink_worker`
#9 [analysis] running analysis passes on this crate
end of query stack
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: error performing operation: fully_perform
  --> src/main.rs:25:13
   |
25 | /             pin!(async move { connection.recv().await })
26 | |                 as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
   | |___________________________________________________________________^
   |
note: delayed at /rustc/5dadfd5c417f0b66816cb7ca662859e2c8751fb3/compiler/rustc_trait_selection/src/traits/query/type_op/custom.rs:87:25
         0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         1: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         2: <rustc_span::ErrorGuaranteed as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
         3: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         4: <rustc_borrowck::type_check::TypeChecker>::prove_trait_ref
         5: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_rvalue
         6: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_body
         7: rustc_borrowck::do_mir_borrowck
         8: <rustc_borrowck::root_cx::BorrowCheckRootCtxt>::get_or_insert_nested
         9: <rustc_borrowck::type_check::TypeChecker>::prove_closure_bounds
        10: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_rvalue
        11: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_body
        12: rustc_borrowck::do_mir_borrowck
        13: <rustc_borrowck::root_cx::BorrowCheckRootCtxt>::get_or_insert_nested
        14: rustc_borrowck::mir_borrowck
        15: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        16: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        17: rustc_query_impl::query_impl::mir_borrowck::get_query_incr::__rust_end_short_backtrace
        18: rustc_hir_analysis::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
        19: rustc_hir_analysis::collect::type_of::type_of_opaque
        20: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        21: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        22: rustc_query_impl::query_impl::type_of_opaque::get_query_incr::__rust_end_short_backtrace
        23: rustc_hir_analysis::collect::type_of::type_of
        24: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        25: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        26: rustc_query_impl::query_impl::type_of::get_query_incr::__rust_end_short_backtrace
        27: rustc_hir_analysis::check::check::check_opaque
        28: rustc_hir_analysis::check::check::check_item_type
        29: rustc_hir_analysis::check::wfcheck::check_well_formed
        30: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>
        31: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        32: rustc_query_impl::query_impl::check_well_formed::get_query_incr::__rust_end_short_backtrace
        33: rustc_hir_analysis::check::wfcheck::check_mod_type_wf
        34: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>
        35: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalModDefId, rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        36: rustc_query_impl::query_impl::check_mod_type_wf::get_query_incr::__rust_end_short_backtrace
        37: rustc_hir_analysis::check_crate
        38: rustc_interface::passes::run_required_analyses
        39: rustc_interface::passes::analysis
        40: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 0]>>
        41: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 0]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
        42: rustc_query_impl::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
        43: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
        44: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        45: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        46: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        47: std::sys::pal::unix::thread::Thread::new::thread_start
        48: start_thread
        49: __clone3
  --> src/main.rs:25:13
   |
25 | /             pin!(async move { connection.recv().await })
26 | |                 as Pin<&mut (dyn Future<Output = _> + Send + Sync)>
   | |___________________________________________________________________^

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.88.0-beta.3 (5dadfd5c4 2025-05-11) 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:
end of query stack
warning: `rustc-ice-2025-05-25` (bin "rustc-ice-2025-05-25") generated 1 warning
error: could not compile `rustc-ice-2025-05-25` (bin "rustc-ice-2025-05-25"); 1 warning emitted

Caused by:
  process didn't exit successfully: `/home/dusterthefirst/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/bin/rustc --crate-name rustc_ice_2025_05_25 --edition=2024 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=97 --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=472b7fe0e2c6e784 -C extra-filename=-096534ea6f86c79d --out-dir /home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps -C incremental=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/incremental -L dependency=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps --extern iced=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps/libiced-9be6de8c3cc5b6a1.rlib --extern mavlink=/home/dusterthefirst/Documents/gh/rustc-ice-2025-05-25/target/debug/deps/libmavlink-c635e4ebd00d118f.rlib` (exit status: 101)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions