Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0152: found duplicate lang item `owned_box`
What it meansA lang item was redefined.
What rustc prints
error[E0152]: found duplicate lang item `owned_box` --> main.rs:4:1 | 4 | struct Foo<T>(T); // error: duplicate lang item found: `owned_box` | ^^^^^^^^^^^^^^^^^ | = note: the lang item is first defined in crate `alloc` (which `std` depends on) = note: first definition in `alloc` loaded from C:\Users\Matthew\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liballoc-77e15b6655744ebb.rmeta = note: second definition in the local crate (`main`)
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
A lang item was redefined.
Erroneous code example:
#![feature(lang_items)]
#[lang = "owned_box"]
struct Foo<T>(T); // error: duplicate lang item found: `owned_box`
Lang items are already implemented in the standard library. Unless you are writing a free-standing application (e.g., a kernel), you do not need to provide them yourself.
You can build a free-standing crate by adding #![no_std] to the crate attributes:
#![no_std]
See also this section of the Rustonomicon.
From rustc --explain E0152 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0061this function takes N arguments but M were supplied
- E0412cannot find type in this scope
- E0515cannot return reference to local variable
- E0728await is only allowed inside async functions and blocks
- E0081discriminant value `3` assigned more than once
- E0133call to unsafe function `f` is unsafe and requires unsafe function or block
- E0264unknown external lang item: `copy`
- E0267`break` inside of a closure
Up next
Often hit nextE0061: this function takes N arguments but M were suppliedA related error from the same family.Read it next →Did this answer your question?