1

documentationで説明されているように、Rust アプリケーションと一緒にクレートを定義しようとしています。次のディレクトリ構造を考えてみましょう。

src/
├─ lib.rs
├─ main.rs
└─ myapp/
  ├─ a/
  │ ├─ a1.rs
  │ └─ mod.rs
  └─ mod.rs

ここで、rust ファイルで次のように定義しました。

lib.rs

pub mod myapp;

main.rs

extern crate myapp;
use myapp::a;

fn main() {
    unimplemented!();
}

myapp/mod.rs

pub mod a;

myapp/a/mod.rs

pub use self::a1::*;
mod a1;

myapp/a/a1.rs

pub fn myfunc()
{
    unimplemented!();
}

上記のディレクトリ ツリーをコンパイルしようとすると、次のエラーが発生します。

$ cargo build
Compiling myapp v0.1.0
src/main.rs:2:5: 2:13 error: unresolved import `myapp::a`. There is no `a` in `myapp` [E0432]
src/main.rs:2 use myapp::a;
                  ^~~~~~~~
src/main.rs:2:5: 2:13 help: run `rustc --explain E0432` to see a detailed explanation
error: aborting due to previous error
Could not compile `myapp`.

ここでどこが間違っていますか?ドキュメントに示されているものと同じディレクトリ構造を持っていると思います。

4

1 に答える 1