extern_absolute_paths

The tracking issue for this feature is: #44660


The extern_absolute_paths feature enables mode allowing to refer to names from other crates "inline", without introducing extern crate items, using absolute paths like ::my_crate::a::b.

::my_crate::a::b will resolve to path a::b in crate my_crate.

feature(crate_in_paths) can be used in feature(extern_absolute_paths) mode for referring to absolute paths in the local crate (crate::a::b).

feature(extern_in_paths) provides the same effect by using keyword extern to refer to paths from other crates (extern::my_crate::a::b).

#![feature(extern_absolute_paths)]

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

use xcrate::Z;

fn f() {
    use xcrate;
    use 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 = ::xcrate::S;
    assert_eq!(format!("{:?}", s), "S");
    let z = Z;
    assert_eq!(format!("{:?}", z), "Z");
}