RuSTLang 书 14.3 - 错误 [E0425] : cannot find function `add_one` in crate `add_one`

标签 rust

我正在阅读 RuSTLang 官方书籍,并已达到第 14.3 章.但是,一旦我达到构建工作区的某个点,编译器就会抛出一个错误。我的项目看起来像这样(根据书)

├── Cargo.lock
├── Cargo.toml
├── add-one
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── adder
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── target
Cargo.toml
[workspace]

members = [
    "adder",
    "add-one",
]
add-one/src/lib.rs
#![allow(unused)]
fn main() {
pub fn add_one(x: i32) -> i32 {
    x + 1
}
}

adder/Cargo.toml
...
[dependencies]

add-one = { path = "../add-one" }
adder/src/main.rs
use add_one;

fn main() {
    let num = 10;
    println!(
        "Hello, world! {} plus one is {}!",
        num,
        add_one::add_one(num)
    );
}
我最初尝试输入文件,但出现上述错误,因此决定复制/粘贴书中的所有文件,但也没有运气。我错过了什么?是我的代码有问题,还是书中的例子有问题?

最佳答案

您正在定义 add_one里面main功能:

#![allow(unused)]
fn main() {
    pub fn add_one(x: i32) -> i32 {
        x + 1
    }
}
嵌套函数的范围仅限于其父函数,这意味着 add_onemain 之外不可见.您可以通过声明 add_one 来解决此问题在模块范围内:
pub fn add_one(x: i32) -> i32 {
    x + 1
}

关于RuSTLang 书 14.3 - 错误 [E0425] : cannot find function `add_one` in crate `add_one` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65620350/

相关文章:

rust - 如何声明一个比其封闭 block 生命周期更长的闭包

rust - 如何在 actix 中创建 application/json HTTPResponse?

rust - 如何在基板模块中将 block 号转换为整数类型?

rust - 如何删除 NEAR 协议(protocol)中的智能合约?

arrays - 我们如何对rust-ndarray中的数组进行算术运算?

SslStream<TcpStream> 读取不返回客户端的消息

rust - 多个底层节点,但每个节点只有一个对等体

rust - Hyper 编译错误

string - 如何将结构或 JSON 转换为原始字符串?

rust - 递归闭包作为函数参数 “cannot infer an appropriate lifetime due to conflicting requirements”