2017-08-11 9 views
1

問題のドメインに応じて別々のディレクトリにファイルを整理することに慣れています(たとえば、画像処理のまとめ、別のディレクトリのIOなど)。この方法や組織がRustでも推奨されるかどうかはわかりません。私はmain.rs複数のディレクトリで錆コードを整理するときに未解決のインポート

one.rs

fn test() { 
    println!("Calling test..."); 
} 

メインone.rsから関数を使用しようとしています

- helloworld 
    - Cargo.toml 
    - src 
     - main.rs 
     - test 
      - one.rs 

は私が複数のディレクトリでの私のプロジェクトのセットアップを持っています。 rs

use test::one::*; 

fn main() { 
    println!("Hello, world!"); 
    test(); 
} 

これは、コンパイル時にエラーが発生:

error[E0432]: unresolved import `test::one::*` 
--> src/main.rs:1:5 
    | 
1 | use test::one::*; 
    |  ^^^^^^^^^^^^^ Maybe a missing `extern crate test;`? 

error[E0425]: cannot find function `test` in this scope 
--> src/main.rs:6:5 
    | 
6 |  test(); 
    |  ^^^^ not found in this scope 

は、いくつかのオンラインプロジェクトを見ると、可能なはずである。このようなことのように思えます。

+1

追加のファイルを作成し、その後

mod test; 

そして、 *錆プログラミング言語*](https://doc.rust-lang.org/stable/book/secondedition/)。それは[モジュールがファイルシステム上でどう生きるかに関するセクション全体]を持っています(https://doc.rust-lang.org/stable/book/secondedition/ch07-01-mod-and-the-filesystem.html)。 – Shepmaster

+1

[錆の本の「モジュール」の章](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html)を読んでいますか?モジュールシステム全体を理解するために、すべてを読むことをお勧めします。 tl; drは: 'mod'宣言が必要です。 [こちらも参照](https://stackoverflow.com/a/43262123/2408867)。興味がある場合:これは将来変更される可能性があります.Rustのモジュールをどのように再設計するかについて多くの議論があります。 –

+0

ありがとうございます。私はちょうどそれを使用して、オンラインブックを見始めた。ちょっと先に飛び込んでいたのですが – Luca

答えて

1

それはしかし、あなたが使用してコード内にある追加のモジュールについてのあなたのコードに通知する必要があり、可能である:[読み取りに時間がかかるしてください

// src/test/mod.rs 

pub mod one; 
+0

私はもちろん、関数をpublicにする必要がありました... – Luca

関連する問題