Error code E0519
The current crate is indistinguishable from one of its dependencies, in terms of metadata.
Example of erroneous code:
a.rs
#![crate_name = "a"]
#![crate_type = "lib"]
pub fn foo() {}
b.rs
#![crate_name = "a"]
#![crate_type = "lib"]
// error: the current crate is indistinguishable from one of its dependencies:
// it has the same crate-name `a` and was compiled with the same
// `-C metadata` arguments. This will result in symbol conflicts between
// the two.
extern crate a;
pub fn foo() {}
fn bar() {
a::foo(); // is this calling the local crate or the dependency?
}
The above example compiles two crates with exactly the same name and
crate_type
(plus any other metadata). This causes an error because it becomes
impossible for the compiler to distinguish between symbols (pub
item names).
This error can be fixed by:
- Using Cargo, the Rust package manager, automatically fixing this issue.
- Recompiling the crate with different metadata (different name/
crate_type
).