Two examples: ``` rust #![feature(core)] #![crate_type = "lib"] pub extern crate core; ``` That is accepted but `core` cannot be accessed from outside the crate. ``` rust #![feature(core)] #![crate_type = "lib"] mod foo { extern crate core; // behaves identically // pub extern crate core; } pub use foo::core; ``` That _is_ accepted and reexports `core`. In other words, `extern crate` is always public to other modules, but can never be made public to other crates. There are no tests for `pub extern crate` so I suspect this is not intentional.