私が見つけたすべての例は、 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
最上位モジュールのメンバーであるかのように表示されます。