如何定义多层板条箱?
How to define a multi level crate?
我正在尝试定义 crate 以及我的 Rust 应用程序,如 documentation 中所述。让我们采用以下目录结构:
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`.
我哪里错了?我想我的目录结构与文档中显示的相同。
您添加了额外的嵌套级别。如果将其更改为
,则您的主要作品
extern crate myapp;
use myapp::myapp::a;
fn main() {
unimplemented!();
}
包在路径中形成自己的级别,因此第一个 myapp
指的是包,第二个 myapp
指的是您创建的模块。
附带说明一下,很少看到具有这种嵌套和分叉级别的板条箱。 Rust crate 往往每个文件都有更大的代码块,当然不是其他语言中常见的每个文件一个结构。当然,这都是我的经验,并不是一成不变的规则。
我正在尝试定义 crate 以及我的 Rust 应用程序,如 documentation 中所述。让我们采用以下目录结构:
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`.
我哪里错了?我想我的目录结构与文档中显示的相同。
您添加了额外的嵌套级别。如果将其更改为
,则您的主要作品extern crate myapp;
use myapp::myapp::a;
fn main() {
unimplemented!();
}
包在路径中形成自己的级别,因此第一个 myapp
指的是包,第二个 myapp
指的是您创建的模块。
附带说明一下,很少看到具有这种嵌套和分叉级别的板条箱。 Rust crate 往往每个文件都有更大的代码块,当然不是其他语言中常见的每个文件一个结构。当然,这都是我的经验,并不是一成不变的规则。