Skip to content

FP expected i32, found dyn Send #23114

Description

@matthiaskrgr

The following code

fn main() {
    let y = Default::default();
    let x = Box::new(y);
    let z: Box<dyn Send> = x;
    let _: i32 = y;
}

comiled with rustc (cargo check):

    Checking _main v0.1.0 (/tmp/icemaker_global_tempdir.sbxd5AYpVDVk/rustc_testrunner_tmpdir.JNEXkG4bq3Zp/_main)
warning: unused variable: `z`
 --> src/main.rs:4:9
  |
4 |     let z: Box<dyn Send> = x;
  |         ^ help: if this is intentional, prefix it with an underscore: `_z`
  |
  = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

warning: `_main` (bin "_main") generated 1 warning (run `cargo fix --bin "_main" -p _main` to apply 1 suggestion)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.06s

but errors were issued by rust-analyzer diagnostics

at crate _main, file /tmp/icemaker_global_tempdir.sbxd5AYpVDVk/rustc_testrunner_tmpdir.JNEXkG4bq3Zp/_main/src/main.rs: Error RustcHardError("E0308") from LineCol { line: 4, col: 17 } to LineCol { line: 4, col: 18 }: expected i32, found dyn Send
at crate _main, file /tmp/icemaker_global_tempdir.sbxd5AYpVDVk/rustc_testrunner_tmpdir.JNEXkG4bq3Zp/_main/src/main.rs: Error RustcHardError("E0277") from LineCol { line: 2, col: 12 } to LineCol { line: 2, col: 20 }: the trait bound `dyn Send: Sized` is not satisfied
at crate _main, file /tmp/icemaker_global_tempdir.sbxd5AYpVDVk/rustc_testrunner_tmpdir.JNEXkG4bq3Zp/_main/src/main.rs: Error RustcHardError("E0277") from LineCol { line: 1, col: 12 } to LineCol { line: 1, col: 28 }: the trait bound `dyn Send: Default` is not satisfied
at crate _main, file /tmp/icemaker_global_tempdir.sbxd5AYpVDVk/rustc_testrunner_tmpdir.JNEXkG4bq3Zp/_main/src/main.rs: Error RustcHardError("E0277") from LineCol { line: 1, col: 12 } to LineCol { line: 1, col: 28 }: the trait bound `dyn Send: Sized` is not satisfied

diagnostic scan complete


Error: diagnostic error detected

Stack backtrace:
   0: <anyhow::Error>::msg::<&str>
             at /home/matthias/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/backtrace.rs:10:14
   1: anyhow::__private::format_err
             at /home/matthias/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/lib.rs:687:13
   2: <rust_analyzer::cli::flags::Diagnostics>::run_
             at /home/matthias/vcs/github/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs:123:13
   3: <rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}
             at /home/matthias/vcs/github/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs:20:29
   4: <stdx::thread::Builder>::spawn::<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}
             at /home/matthias/vcs/github/rust-analyzer/crates/stdx/src/thread.rs:74:13
   5: std::sys::backtrace::__rust_begin_short_backtrace::<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:166:18
   6: std::thread::lifecycle::spawn_unchecked::<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}::{closure#0}
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/lifecycle.rs:70:13
   7: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:275:9
   8: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}::{closure#0}>, core::result::Result<(), anyhow::Error>>
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:576:43
   9: std::panicking::catch_unwind::<core::result::Result<(), anyhow::Error>, core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}::{closure#0}>>
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  10: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}::{closure#0}>, core::result::Result<(), anyhow::Error>>
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  11: std::thread::lifecycle::spawn_unchecked::<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1}
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/lifecycle.rs:68:26
  12: <std::thread::lifecycle::spawn_unchecked<<stdx::thread::Builder>::spawn<<rust_analyzer::cli::flags::Diagnostics>::run::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#0}, core::result::Result<(), anyhow::Error>>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
             at /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  13: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/969b803cbe1d4499f841ae0a49c637d8c70a0458/library/alloc/src/boxed.rs:2318:9
  14: <std::sys::thread::unix::Thread>::new::thread_start
             at /rustc/969b803cbe1d4499f841ae0a49c637d8c70a0458/library/std/src/sys/thread/unix.rs:123:17
  15: <unknown>
  16: <unknown>

version information

rust-analyzer 0.0.0 (f938641be5 2026-08-10)

Metadata

Metadata

Assignees

Labels

A-tytype system / type inference / traits / method resolutionC-bugCategory: bugE-easyE-has-instructionsIssue has some instructions and pointers to code to get started

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions