在crates.io上注册一般有用的(实用程序/应用程序)是否可以接受?
FAQ没有解决这个问题,在浏览时,有最终用户应用程序的示例(主要是命令行工具)。
或者是crates.io?仅适用于图书馆?
我问这个是因为文档暗示了库的使用,API的语义版本控制等等,但没有明确提到打包应用程序的情况。
答案 0 :(得分:5)
是的,因为您可以使用cargo install
在系统范围内安装和管理这些应用程序。如果不鼓励这种使用,我会怀疑该命令根本不存在,或者至少具有非常有限的适用性。
来自cargo install --help
的片段:
用法:
cargo install [options] [<crate>] cargo install [options] --list
[...]
此命令管理Cargo本地安装的二进制包装箱。 只能安装具有
[[bin]]
目标的软件包 二进制文件安装在安装根目录的bin
文件夹中。该 安装根按优先顺序由--root
确定,$CARGO_INSTALL_ROOT
,install.root
配置密钥,以及 最后是主目录(如果设置,则为$CARGO_HOME
或 默认为$HOME/.cargo
。有多个来源可以安装箱子。该 默认位置是crates.io,但
--git
和--path
标志可以 改变这个来源。如果源包含多个包(例如 作为crates.io或具有多个板条箱的git存储库)<crate>
需要参数来指示应安装哪个箱子。
答案 1 :(得分:1)
这不应该是将应用程序发布到crates.io的主要原因,但我在这里列出它是因为它仍然是一个很好的理由。 :)
Rust团队偶尔会使用名为crater的工具检查crates.io上发布的所有包装箱的回归情况,通常在合并具有不确定后果的拉取请求之前。如果您编写的代码恰好今天编译但由于编译器中的错误修复而停止编译 1 ,那么他们甚至可能会向您的项目提交修改代码的拉取请求!
1 通常,当发生这种突破性变化时,至少有一个先前版本会在警告变为错误之前报告警告。