Можно ли разделить ящик на несколько файлов, не вводя модули для каждого файла?

Все примеры, которые я нашел, создают lib.rs а затем внутри этого файла создать mod foo;, mod bar; для каждого файла foo.rs, bar.rs и так далее.

По сути, я хочу разделить свой ящик на несколько файлов, но не нужно вводить множество модулей для каждого файла. Разве это не возможно с Rust?

1 ответ

Решение

Чтобы включить другой исходный файл, он должен быть его собственным модулем.

Однако это не означает, что вы должны раскрыть этот факт в своем API. Например, допустим, вы хотите поместить некоторый код в файл с именем hidden.rs:

pub fn inside_hidden() {}

Теперь в вашем lib.rs файл, вы можете выставить этот модуль:

#![crate_type = "lib"]

pub mod hidden;

Но если вашей библиотеке не требуются субмодули, вероятно, лучше сохранить hidden модуль секрет, и вместо этого выставить его содержимое как члены вашего модуля верхнего уровня:

#![crate_type = "lib"]

pub use hidden::inside_hidden;

mod hidden;

Таким образом, пользователи не будут знать, что у вас есть hidden суб-модуль. Они увидят inside_hidden как если бы он был членом вашего модуля верхнего уровня.

Другие вопросы по тегам