## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 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`).