gpt4 book ai didi

module - 当两个子模块都在同一个主模块中时,从另一个子模块访问子模块

转载 作者:行者123 更新时间:2023-11-29 07:46:28 25 4
gpt4 key购买 nike

我正在使用 rustc 1.0.0 (a59de37e9 2015-05-13)(内置 2015-05-14) 并且我有以下设置:

my_app/
|
|- my_lib/
| |
| |- foo
| | |- mod.rs
| | |- a.rs
| | |- b.rs
| |
| |- lib.rs
| |- Cargo.toml
|
|- src/
| |- main.rs
|
|- Cargo.toml

源/main.rs:

extern crate my_lib;

fn main() {
my_lib::some_function();
}

我的库/lib.rs:

pub mod foo;

fn some_function() {
foo::do_something();
}

my_lib/foo/mod.rs:

pub mod a;
pub mod b;

pub fn do_something() {
b::world();
}

my_lib/foo/a.rs:

pub fn hello() {
println!("Hello world");
}

my_lib/foo/b.rs:

use a;
pub fn world() {
a::hello();
}

cargo .toml:

[dependencies.my_lib]
path = "my_lib"

当我尝试编译它时,我收到以下针对 B.rs 中的 use 语句抛出的错误:

unresolved import `A`. There is no `A` in `???`

我错过了什么?谢谢。

最佳答案

问题是 use 路径是绝对的,而不是相对的。当你说 use A; 时,你实际上是在说“在这个 crate 的根模块中使用符号 A”,这将是 lib.rs.

您需要使用的是 use super::A;,或者完整路径:use foo::A;

我在 Rust's module system and how paths work 上写了一篇文章如果 Rust Book chapter on Crates and Modules 可能有助于解决这个问题没有。

关于module - 当两个子模块都在同一个主模块中时,从另一个子模块访问子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670129/

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