Rustのファイル分割方法
1. はじめに
ファイル分割ができると、ファイル管理がしやすくなります。今までは Rust で何回も cargo new をして分けていましたが、さすがに容量を考えると大量に行うのは非効率でした。
サンプルコードは下記 URL にあります。
file_split URL:
https://github.com/DiaSird/files_split
2. プロジェクトの作成
今回は Hello World!を例にファイル分割を行います。
まず、cargo new で新規プロジェクトを作ります。
$ cargo new files_split
ここで、main プログラムにある出力形式(println!())を関数 hello();に書き換えておきましょう。
// main.rs
fn main() {
// Hello, world!
say_hello();
}
3. モジュールで整理する
次に、src フォルダに lib.rs と module フォルダを作成します。下のように、lib.rs で module の宣言を行います。
// lib.rs
// pub mod <directory name>
pub mod module;
続いて module フォルダ内の操作に移ります。
module フォルダでは、最初に mod.rs を作成します。
mod.rs 内では下記のように、モジュールとクレート(モジュールツリー)の宣言を行います。
// mod.rs
// pub mod <module file name>
pub mod hello;
// pub use crate::<module name>::<module file name>
pub use crate::module::hello::say_hello;
module フォルダの中での module は、次に作成する hello.rs に該当します。
hello.rs を作成し、下のように say_hello 関数を作成しましょう。pub は public の略称で、rust はデフォルトの状態が外部から呼び出せない private な関数となっています。
// hello.rs
pub fn say_hello() {
println!("Hello, world!");
}
4. 実行
最後に src/main.rs に戻り、ワイルドカード * 形式でファイル(複数あればファイル群)にある関数を呼び出します。その中継役は lib.rs が担っています。
main.rs の変更:
// main.rs
// use <project name>::<module name>
use files_split::module::*;
fn main() {
// Hello, world!
say_hello();
}
以上でファイル分割は完成です。サンプルコードでは module フォルダ内で hello2.rs を追加していますが、main 関数で say_hello2();をコメントアウトすれば自由に出力形式が変えられます。
実行:
$ cargo run
実行結果:
Hello, world!
参考資料
Rust をやってみる(ファイル分割)
- 前編
https://www.wow-creators.com/programming/rust%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%88%86%E5%89%B2/ - 後編
https://www.wow-creators.com/programming/rust%e3%82%92%e3%82%84%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%88%86%e5%89%b2-%e5%be%8c%e7%b7%a8/
Author And Source
この問題について(Rustのファイル分割方法), 我々は、より多くの情報をここで見つけました https://qiita.com/DiaSird/items/533046e22aa437f10f95著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .