blob: 12876e2ad75fcc92c34885a567292945b7335e78 [file] [log] [blame] [view]
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`).