Создание псевдонимов use
#![allow(unused)] fn main() { use crate::front_of_house::hosting; pub fn eat_at_restaurant() { hosting::add_to_waitlist(); } }
useсоздаёт псевдоним только для той конкретной области, в которой это объявление use и находится
чтобы была видимость модуля можно переместить use в модуль видимости, или же можно сослаться на псевдоним в родительском модуле с помощью super::hosting из дочернего модулея customer.
Подключение одинаковых типов из разных модулей
#![allow(unused)] fn main() { use std::fmt; use std::io; fn function1() -> fmt::Result { // --snip-- Ok(()) } fn function2() -> io::Result<()> { // --snip-- Ok(()) } }
Ключевое слово as
Есть другое решение проблемы добавления двух типов с одинаковыми именами в одну и ту же область видимости используя use: после пути можно указать as и новое локальное имя (псевдоним) для типа
#![allow(unused)] fn main() { use std::fmt::Result; use std::io::Result as IoResult; fn function1() -> Result { // --snip-- Ok(()) } fn function2() -> IoResult<()> { // --snip-- Ok(()) } }
Реэкспорт имен pub use
#![allow(unused)] fn main() { mod front_of_house { pub mod hosting { pub fn add_to_waitlist() {} } } pub use crate::front_of_house::hosting; pub fn eat_at_restaurant() { hosting::add_to_waitlist(); } }
делаем экспортируемый функционал видимым в других блоках
Использование внешних пакетов
- Добавить в зависимости имя и версию пакета в
Cargo.toml - Прописать
useимя пакета и функцию - Применить функцию в коде
Вложенные пути
#![allow(unused)] fn main() { use rand::Rng; // --snip-- use std::{cmp::Ordering, io}; // --snip-- }
или
#![allow(unused)] fn main() { use std::io::{self, Write}; }
Эта строка подключает std::io и std::io::Write в область видимости.
Оператор * (glob)
#![allow(unused)] fn main() { use std::collections::*; }
включает все элементы коллекции
Модули в разные файлы
- Перенос модуля
front_of_house
- Файл: src/lib.rs
#![allow(unused)] fn main() { mod front_of_house; pub use crate::front_of_house::hosting; pub fn eat_at_restaurant() { hosting::add_to_waitlist(); } }
- Файл: src/front_of_house.rs
#![allow(unused)] fn main() { pub mod hosting { pub fn add_to_waitlist() {} } }
- Перенос модуля
hosting
- Файл: src/front_of_house.rs
#![allow(unused)] fn main() { pub mod hosting; }
- Файл:
src/front_of_house/hosting.rs
#![allow(unused)] fn main() { pub fn add_to_waitlist() {} }