# `extern_in_paths`

The tracking issue for this feature is: #44660

The `extern_in_paths` feature allows to refer to names from other crates "inline", without introducing `extern crate` items, using keyword `extern`.

For example, `extern::my_crat::a::b` will resolve to path `a::b` in crate `my_crate`.

Absolute paths on 2018 edition (e.g. `::my_crate::a::b`) provide the same effect and resolve to extern crates (built-in or passed with `--extern`).

    #![feature(extern_in_paths)]

    // Suppose we have a dependency crate `xcrate` available through `Cargo.toml`, or `--extern`
    // options, or standard Rust distribution, or some other means.

    use extern::xcrate::Z;

    fn f() {
        use extern::xcrate;
        use extern::xcrate as ycrate;
        let s = xcrate::S;
        assert_eq!(format!("{:?}", s), "S");
        let z = ycrate::Z;
        assert_eq!(format!("{:?}", z), "Z");
    }

    fn main() {
        let s = extern::xcrate::S;
        assert_eq!(format!("{:?}", s), "S");
        let z = Z;
        assert_eq!(format!("{:?}", z), "Z");
    }