extern crate foowskazuje, że chcesz połączyć się z biblioteką zewnętrzną i wprowadza nazwę skrzynki najwyższego poziomu do zakresu (odpowiednik use foo). Jak Rust 2018, w większości przypadków nie trzeba używać extern cratejuż ponieważ Cargo informuje kompilator o tym, co skrzynie są obecne. (Jest jeden lub dwa wyjątki )
use bar to skrót odnoszący się do w pełni kwalifikowanych symboli.
Teoretycznie język nie potrzebuje use - zawsze możesz po prostu w pełni zakwalifikować nazwy, ale pisanie std::collections::HashMap.new(...)byłoby bardzo nudne! Zamiast tego możesz wpisać use std::collections::HashMapjeden raz, a następnie HashMapodnieść się do tego.
extern crate foo;? Skrzynki i moduły to osobne koncepcje w Rusta, warto rzucić okiem na „Podstawową terminologię: skrzynki i moduły”, która wyjaśnia różnicę między nimi (osobiście uważam poniższe przykłady za zbyt szczegółowe).