【问题标题】:Why does `cargo new` create a binary instead of a library?为什么`cargo new` 创建一个二进制文件而不是一个库?
【发布时间】:2018-04-07 23:35:44
【问题描述】:

我正在用 Rust 创建一个库。在创建库时我输入

cargo new name

根据文档,这应该创建一个库,因为省略了 --bin。 但是,该文件会自动设置为二进制文件。

是否有一个设置我必须调整以禁用自动将所有项目设置为二进制?

【问题讨论】:

    标签: rust rust-cargo


    【解决方案1】:

    货物特性

    Cargo 的 CLI 在这个版本中有一个非常重要的变化:cargo new 现在默认生成二进制文件,而不是库。我们试图让 Cargo 的 CLI 保持相当稳定,但这种变化很重要,不太可能导致损坏。

    对于某些背景,cargo new 接受两个标志:--lib,用于创建库,--bin,用于创建二进制文件或可执行文件。如果您不传递这些标志之一,在以前版本的 Cargo 中,它将默认为 --lib。我们做出这个决定是因为每个二进制文件(通常)依赖于许多库,因此库案例更为常见。但是,这是不正确的;每个库都依赖于许多二进制文件。此外,在开始时,您通常想要的是一个可以运行和玩耍的程序。不过,这不仅仅是新的 Rustaceans。即使是很长时间的社区成员也表示,他们发现这种默认设置令人惊讶。因此,我们正在对其进行更改。

    Source

    【讨论】:

    • 德普。谢谢。时限结束后将标记为已回答
    • 哎呀——每个发现这令人惊讶并不得不学习 Rust 方式的人现在都必须忘记这一点——从那时起编写的每一篇文档现在都是错误的,我的 Kindle 电子书“Programming Rust”是错误的,它的所有印刷副本也是如此。哇。 Rust 不再是一种婴儿语言,它有真正的用户。在这个阶段,这似乎是一个非常奇怪的改变。
    • @FredrickBrennan 我已经检查过了,“Programming Rust”中的所有调用都是cargo new --bin,原来如此,改变的是cargo new(没有任何标志)现在表现不同。如果你一直在使用标志,那么什么都不会改变。
    • @FredrickBrennan 这担心货物不会直接生锈。
    【解决方案2】:

    自 Cargo 1.25 cargo new defaults to creating a binary crate, instead of a library crate.

    cargo new 接受两个标志:--lib,用于创建库,--bin,用于创建二进制文件或可执行文件。

    请参阅Changelog for 1.25

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 2019-07-17
      • 2021-09-09
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多