Cargo 编译失败 'num'

Cargo fails to compile 'num'

我正在尝试在我的 Rust 项目中使用 crate 'num'(我是这门语言的新手),所以我的 Cargo.toml 现在是:

[package]

name = "hello_world"
version = "0.0.1"
authors = [ "Vini" ]

[dependencies]

time = "*"
num = "*"

但是当我 运行:

cargo run

我得到这个编译错误:

/.cargo/registry/src/github.com-0a35038f75765ae4/num-0.0.6/src/bigint.rs:66:16: 66:19 error: expected identifier, found keyword `mod`

/.cargo/registry/src/github.com-0a35038f75765ae4/num-0.0.6/src/bigint.rs:66 use std::str::{mod, FromStr};

                                                                                           ^~~

/.cargo/registry/src/github.com-0a35038f75765ae4/num-0.0.6/src/bigint.rs:80:27: 80:28 error: expected one of `(`, `+`, `::`, `;`, `<`, or `]`, found `,`

/.cargo/registry/src/github.com-0a35038f75765ae4/num-0.0.6/src/bigint.rs:80 static ZERO_VEC: [BigDigit, ..1] = [ZERO_BIG_DIGIT];
                                                                                                      ^
Could not compile `num`.

我不知道这到底是什么意思,我是不是用错了 cargo?此版本 'num' 与 cargo 不兼容吗?

我有货运版:

cargo 0.4.0-nightly (15b497b 2015-07-08) (built 2015-07-10)

和 Rust 编译器:

rustc 1.2.0 (082e47636 2015-08-03)

简答

您的 Cargo.lock 文件包含对旧版本箱子的引用(在本例中是 非常 旧的箱子)。 运行 cargo update 获取最新版本。

为什么

在构建代码时,您可以使用 Cargo.toml 文件将所需的版本限制传达给 Cargo。这让你可以说 "at least this version" 或 "only this exact version" 或 "any bug fix to this version".

Cargo 接受您的限制和当前可用的版本,并计算出适合或告诉您是否不适合的最新版本集。然后将所有这些数据保存到 Cargo.lock 文件中。

Cargo.lock 文件会保留下来,这样库的版本就不会随您随意更改。您可以 运行 cargo update 重做该过程并获取最新版本。

如果您正在制作图书馆,那么故事就到此结束。如果您正在生成二进制文件,则应该将锁定文件签入源代码管理,因为这是您与代码的其他用户交流的方式,确切地说应该使用哪些版本。当您部署代码版本时,您可以确保在生产中使用与开发相同的版本。