Open
Description
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)