Модули Rust, объединение двух операторов - PullRequest
1 голос
/ 08 апреля 2020

Из документации

use std::io;
use std::io::Write;

Два оператора использования, где один является подпуть другого

Общей частью этих двух путей является std :: io, и это полный первый путь , Чтобы объединить эти два пути в один оператор использования, мы можем использовать self во вложенном пути, как показано в Листинге

use std::io::{self, Write};

Объединение путей в один оператор использования

Эта строка возвращает std::io и std::io::Write в область действия.

если я ввел в область действия std::io, разве не очевидно, что io::Write будет автоматически доступен в предоставленной области действия Запись - это элемент публикации c? Почему это нужно импортировать отдельно?

1 Ответ

0 голосов
/ 08 апреля 2020

Если я хорошо понял ваш вопрос, я думаю, что вы неправильно понимаете утверждения use.

Мне кажется, вы думаете, что утверждение use std::io соберет все публикации c вещи изнутри. Но это не правда. Он просто создаст alias для std::io как просто io, так что вы можете использовать его как io::Result или io::Write. Если вы хотите извлечь из этого все опубликованные вещи c, вы должны использовать вместо этого std::io::*, но это не рекомендуется, поскольку это приведет к загрязнению вашего пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...