我可以在没有 Cargo.toml 的情况下使用 Cargo 安装库吗?
Can I install a library using Cargo without a Cargo.toml?
我正在学习 Rust 入门,我需要在我的系统上安装 the rand crate。我没有做 Cargo 包装的东西(例如创建 Cargo.toml
),因为我对语言感兴趣,而不是包装。
我可以在不使用 cargo
命令创建 Cargo.toml
的情况下在我的系统上安装 rand 库吗?
$ cargo install rand
Updating registry `https://github.com/rust-lang/crates.io-index`
specified package has no binaries
实用答案
没有。使用货物。 使用起来非常简单,它可以防止您在管理版本(和冲突版本)时搬起石头砸自己的脚。
because I was interested in the language, not packaging.
从 99.9% 的 Rust 用户的角度来看,Cargo 是 语言的一部分,或者至少是 Rust 生态系统的一部分。您可能期望在其他语言标准库中提供的许多东西都在板条箱中提供(随机数生成就是一个很好的例子)。
install the library on my system
最终,这没有意义。没有可以安装的库的唯一真实版本。每个使用 crate 的程序都可能使用不同的版本,因为它有不同的需求。更进一步,您可以为不同的项目以不同的方式编译 crate - crate 具有 特性 可以改变它们的编译方式。
cargo install rand
这实际上是一种使用 Cargo 构建整个 Rust 项目的方法,该项目提供 binary 并将其安装在您的系统上。这更有意义,因为它是一个单一的、包含的实体。不幸的是,正是因为这个原因,它可能会让人感到困惑!
另请参阅:
技术上正确的答案
你当然可以;你只需要手动完成 Cargo 为你做的一切。这涉及
- 正在下载包。
- 这也意味着包的任何依赖项。
- 以及正确的版本。
- 编译包。
- 和依赖项。
- 维护依赖树并将其传递给每个后续包。
- 最后,您可以编译代码了。
编译单个库和使用该库的单个可执行文件的具体示例:
$ rustc --edition=2018 --crate-type=rlib --crate-name library_example src/lib.rs -o libmy_library.rlib
$ rustc --edition=2018 --extern library_example=libmy_library.rlib examples/main.rs
我正在学习 Rust 入门,我需要在我的系统上安装 the rand crate。我没有做 Cargo 包装的东西(例如创建 Cargo.toml
),因为我对语言感兴趣,而不是包装。
我可以在不使用 cargo
命令创建 Cargo.toml
的情况下在我的系统上安装 rand 库吗?
$ cargo install rand
Updating registry `https://github.com/rust-lang/crates.io-index`
specified package has no binaries
实用答案
没有。使用货物。 使用起来非常简单,它可以防止您在管理版本(和冲突版本)时搬起石头砸自己的脚。
because I was interested in the language, not packaging.
从 99.9% 的 Rust 用户的角度来看,Cargo 是 语言的一部分,或者至少是 Rust 生态系统的一部分。您可能期望在其他语言标准库中提供的许多东西都在板条箱中提供(随机数生成就是一个很好的例子)。
install the library on my system
最终,这没有意义。没有可以安装的库的唯一真实版本。每个使用 crate 的程序都可能使用不同的版本,因为它有不同的需求。更进一步,您可以为不同的项目以不同的方式编译 crate - crate 具有 特性 可以改变它们的编译方式。
cargo install rand
这实际上是一种使用 Cargo 构建整个 Rust 项目的方法,该项目提供 binary 并将其安装在您的系统上。这更有意义,因为它是一个单一的、包含的实体。不幸的是,正是因为这个原因,它可能会让人感到困惑!
另请参阅:
技术上正确的答案
你当然可以;你只需要手动完成 Cargo 为你做的一切。这涉及
- 正在下载包。
- 这也意味着包的任何依赖项。
- 以及正确的版本。
- 编译包。
- 和依赖项。
- 维护依赖树并将其传递给每个后续包。
- 最后,您可以编译代码了。
编译单个库和使用该库的单个可执行文件的具体示例:
$ rustc --edition=2018 --crate-type=rlib --crate-name library_example src/lib.rs -o libmy_library.rlib
$ rustc --edition=2018 --extern library_example=libmy_library.rlib examples/main.rs