私が見つけたすべての例は、 create alib.rsを作成し、そのファイル内で create mod foo;、mod bar;for each filefoo.rsなどを作成しますbar.rs。
基本的に私が望むのは、クレートを複数のファイルに分割することですが、ファイルごとに多くのモジュールを導入する必要はありません。これはRustでは不可能ですか?
私が見つけたすべての例は、 create alib.rsを作成し、そのファイル内で create mod foo;、mod bar;for each filefoo.rsなどを作成しますbar.rs。
基本的に私が望むのは、クレートを複数のファイルに分割することですが、ファイルごとに多くのモジュールを導入する必要はありません。これはRustでは不可能ですか?
別のソース ファイルをインクルードするには、それが独自のモジュールである必要があります。
ただし、これは、この事実を 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最上位モジュールのメンバーであるかのように表示されます。