gpt4 book ai didi

rust - 如何定义多层 crate ?

转载 作者:行者123 更新时间:2023-11-29 08:12:50 28 4
gpt4 key购买 nike

我正在尝试定义与我的 Rust 应用程序一起使用的 crate,如 documentation 中所述.让我们采用以下目录结构:

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

现在我在我的 rust 文件中定义了以下内容:

库.rs

pub mod myapp;

主要.rs

extern crate myapp;
use myapp::a;

fn main() {
unimplemented!();
}

我的应用程序/mod.rs

pub mod a;

myapp/a/mod.rs

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

我的应用/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 指的是你创建的模块。

附带说明一下,很少看到具有这种嵌套和 fork 级别的 crate 。 Rust crate 往往每个文件都有更大的代码块,当然不是其他语言中常见的每个文件一个结构。当然,这都是我的经验,并不是一成不变的规则。

关于rust - 如何定义多层 crate ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com