Cargo无法编译' num'

时间:2015-09-17 01:48:16

标签: compiler-errors rust rust-cargo

我试图使用crate' num'在我在Rust的项目中(我是这种语言的新手),所以我的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`.

我不知道这实际意味着什么,我使用货物错了吗?这个版本是&#39; num&#39;与货物不相容?

我有货物版本:

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

和生锈编译器:

rustc 1.2.0 (082e47636 2015-08-03)

1 个答案:

答案 0 :(得分:3)

简短回答

您的Cargo.lock文件包含旧版旧版本的引用(在这种情况下,非常旧版本)。运行cargo update以获取最新版本。

为什么

构建代码时,使用 Cargo.toml 文件将所需的版本限制传达给Cargo。这可以让你说“至少这个版本”或“只有这个版本”或“此版本的任何错误修复”。

Cargo接受您的限制和当前可用的版本,并计算适合或告诉您的最新版本,如果不能。然后,它会将所有数据保存到 Cargo.lock 文件中。

Cargo.lock文件一直存在,因此库的版本不会随意改变。您可以运行cargo update来重做该过程并获得最新版本。

如果你正在制作一个图书馆,那就是故事的结局。如果要生成二进制文件,则应该将lockfile检入源代码控制,因为这是您与代码的其他用户确切通信应该使用的版本。部署代码版本时,可以确保在生产中将相同版本用作开发。