`mod` makes things part of the current project, `extern crate` is for referencing other projects. The former is way tighter, bidirectional coupling, you won't have to deal with different versions of single source files in the same compilation unit, you can have mutually recursive references between modules within the same compilation unit, and it's relevant for the orphan rule.
In a nest module within the crate, you can use names defined in the modules containing you, transitively, but in a crate you naturally can't use names defined in other crates linking to you. It's really not the same kind of relationship.
In a nest module within the crate, you can use names defined in the modules containing you, transitively, but in a crate you naturally can't use names defined in other crates linking to you. It's really not the same kind of relationship.