The current crate is indistinguishable from one of its dependencies, in terms of metadata. Example of erroneous code: `a.rs` ```ignore (cannot-link-with-other-tests) #![crate_name = "a"] #![crate_type = "lib"] pub fn foo() {} ``` `b.rs` ```ignore (cannot-link-with-other-tests) #![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](../cargo/index.html), the Rust package manager, automatically fixing this issue. * Recompiling the crate with different metadata (different name/ `crate_type`).