[解決済み] 同じプロジェクトの別のファイルからモジュールをインクルードする方法は?
2022-04-17 23:55:23
質問
以下による このガイド Cargoのプロジェクトを作成しました。
src/main.rs
fn main() {
hello::print_hello();
}
mod hello {
pub fn print_hello() {
println!("Hello, world!");
}
}
を使って実行しています。
cargo build && cargo run
で、エラーなくコンパイルされます。今、メインモジュールを2つに分割しようとしていますが、他のファイルからモジュールをインクルードする方法がわかりません。
私のプロジェクトツリーは次のようなものです。
├── src
├── hello.rs
└── main.rs
とファイルの中身を表示します。
src/main.rs
use hello;
fn main() {
hello::print_hello();
}
src/hello.rs
mod hello {
pub fn print_hello() {
println!("Hello, world!");
}
}
でコンパイルすると
cargo build
私は得る
error[E0432]: unresolved import `hello`
--> src/main.rs:1:5
|
1 | use hello;
| ^^^^^ no `hello` external crate
私は、コンパイラの提案にしたがって
main.rs
に変更しました。
#![feature(globs)]
extern crate hello;
use hello::*;
fn main() {
hello::print_hello();
}
しかし、これでもあまり役に立たず、今度はこうなってしまいました。
error[E0463]: can't find crate for `hello`
--> src/main.rs:3:1
|
3 | extern crate hello;
| ^^^^^^^^^^^^^^^^^^^ can't find crate
現在のプロジェクトから1つのモジュールをプロジェクトのメインファイルにインクルードする方法についての些細な例はありますか?
どのように解決するのですか?
は必要ありません。
mod hello
の中で
hello.rs
ファイルを作成します。クレートルート以外のファイル内のコード (
main.rs
実行可能ファイルの場合
lib.rs
はライブラリの場合)は、自動的にモジュールに名前空間が設定されます。
のコードをインクルードするには
hello.rs
の中で
main.rs
を使用します。
mod hello;
. の中にあるコードに展開されます。
hello.rs
(以前と全く同じように)。ファイル構造はそのままで、コードを少し変更する必要があります。
main.rs
:
mod hello;
fn main() {
hello::print_hello();
}
hello.rs
:
pub fn print_hello() {
println!("Hello, world!");
}
関連
-
[解決済み] usize` と `u32` の違いは何ですか?
-
[解決済み] Rustのユニットテストでprintln! が動作しないのはなぜ?
-
[解決済み] なぜRustコンパイラは、2つのミュータブル参照がエイリアスできないと仮定してコードを最適化しないのですか?
-
[解決済み】ある値とその値への参照を同じ構造体に格納できないのはなぜですか?
-
[解決済み】ライブラリとバイナリの両方を持つRustパッケージ?
-
[解決済み】Rustで文字列を分割する方法は?
-
[解決済み】RustプログラムがCargoパッケージからメタデータにアクセスする方法は?
-
[解決済み] Iterator(またはその他の trait)を返す正しい方法は何ですか?
-
[解決済み] クロージャがFn、FnMut、FnOnceを実装するのはどんなとき?
-
[解決済み] Stringを&'static strに変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rustで絶対値を求めるには?
-
[解決済み] 構造体のフィールドをメソッドから変異させるには?
-
[解決済み] Rustで絶対値を求めるには?
-
[解決済み] なぜRustコンパイラは、2つのミュータブル参照がエイリアスできないと仮定してコードを最適化しないのですか?
-
[解決済み】ある値とその値への参照を同じ構造体に格納できないのはなぜですか?
-
[解決済み】ライブラリとバイナリの両方を持つRustパッケージ?
-
[解決済み】Rustの正確な自動再参照のルールは?
-
[解決済み] Rust の 128 ビット整数 `i128` は 64 ビットシステムでどのように動作するのでしょうか?
-
[解決済み】iterとinto_iterの違いは何ですか?
-
[解決済み] カスタムステップで範囲を反復処理するには?