我试图使用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)
答案 0 :(得分:3)
您的Cargo.lock文件包含旧版旧版本的引用(在这种情况下,非常旧版本)。运行cargo update
以获取最新版本。
构建代码时,使用 Cargo.toml 文件将所需的版本限制传达给Cargo。这可以让你说“至少这个版本”或“只有这个版本”或“此版本的任何错误修复”。
Cargo接受您的限制和当前可用的版本,并计算适合或告诉您的最新版本,如果不能。然后,它会将所有数据保存到 Cargo.lock 文件中。
Cargo.lock文件一直存在,因此库的版本不会随意改变。您可以运行cargo update
来重做该过程并获得最新版本。
如果你正在制作一个图书馆,那就是故事的结局。如果要生成二进制文件,则应该将lockfile检入源代码控制,因为这是您与代码的其他用户确切通信应该使用的版本。部署代码版本时,可以确保在生产中将相同版本用作开发。