Подтвердить что ты не робот

Несколько исходных файлов ржавчины для груза

Если у меня есть несколько файлов .rs в каталоге src пакета Cargo, каковы правила видимости, импорта и т.д.?

В настоящее время игнорируются любые дополнительные (то есть не файлы, которые явно указаны как исходные файлы для исполняемого файла в Cargo.toml).

Что мне нужно сделать, чтобы исправить это?

4b9b3361

Ответ 1

В этом нет ничего особенного в Cargo. Его полностью нормальная система модулей Rust. Если Cargo будет компилировать src/lib.rs, это более или менее эквивалентно выполнению rustc --crate-type lib src/lib.rs (на практике есть больше аргументов командной строки, но это основы его).

Другие файлы затем используются с mod, use и так далее. Файлы не импортируются автоматически или что-то в этом роде. Эта часть еще не задокументирована очень четко; несколько вещей, которые кратко показывают, как достичь результатов, http://rustbyexample.com/mod/split.html и http://doc.rust-lang.org/reference.html#modules, но любые нетривиальная база кода будет использовать их, и вы можете выбрать практически любую базу кода, чтобы посмотреть на примеры.

Ответ 2

Трудно сказать, от чего вы справляетесь, из информации, которую вы делили. Вот три, казалось бы, тривиальные вещи, которые я все еще должен был сослаться на документ, чтобы выяснить:

Прежде всего,

    mod foo;

выглядит как объявление, но без аргументов это действительно что-то вроде include. Таким образом, вы используете одно и то же ключевое слово для объявления и включения модулей, т.е. Не используется ключевое слово::.

Во-вторых, сами модули могут быть общедоступными или частными. Если вы не добавили ключевое слово pub как на функцию, о которой идет речь, так и на содержащийся модуль, это может привести к отключению вас.

    pub mod foo {pub fn bar();}

В-третьих, кажется, что неявный модуль добавлен в начало каждого файла. Это смущает; в справочном руководстве говорится о строгом разделении между путями файлов и именами и пути к модулю в вашем коде, но эта абстракция здесь кажется неаккуратной.

Примечание. На момент написания статьи Rust все еще пред-1.0 (0.12), в системе модуля и пути к файлам относительно высокий уровень, поэтому не удивляйтесь, если то, что я сказал, может быть уже неверным к моменту вашего чтения это.