我想谨慎地发布一个新版本的 crate ,让用户有机会首先测试它.我怎样才能把它放进 crate .io作为"测试版"?(类似于npm有@next个带标签的发布).

这不应该是一个突破性的改变,所以我不会增加semver主要版本.我不希望在beta测试期结束前,当用户完成cargo upgrade次测试时自动 Select 它.

  • 发布时我应该使用什么版本语法?

  • 释放时我需要使用任何特殊Cargo 选项吗?

  • 用户如何使用cargo/Cargo.toml Select 进入测试版?

推荐答案

Semantic versioning定义了pre-release version的概念:

预发布版本可以通过在补丁版本之后立即添加连字符和一系列点分隔标识符来表示.标识符必须仅包含ASCII字母数字和连字符[0-9A-Za-z-].标识符不能为空.数字标识符不得包含前导零.预发布版本的优先级低于关联的正常版本.预发布版本表示该版本不稳定,可能无法满足相关正常版本所表示的预期兼容性要求.示例:1.0.0-alpha,1.0.0-alpha.1,1.0.0-0.3.7,1.0.0-x.7.z、 92

要在Cargo 中使用此功能,请发布一个计划版本号的 crate ,但附加一个预发布标识符.我建议-beta.0,如果你需要一秒钟,可以轻松增加:

[package]
name = "library"
version = "0.1.1-beta.0"

要使用它,您需要在版本要求中加入beta,以明确 Select :

[dependencies]
library = "0.1.1-beta"

为了测试这一点,我:

  1. 当地的一个 crate .io服务器
  2. 上传了版本为0.1.0的 crate library
  3. 在二进制项目app中使用library = "0.1.0"-解析为0.1.0
  4. 上传了版本为0.1.1-beta的 crate library.0
  5. app年运行cargo update次——did not版发生变化.
  6. app年改为library = "0.1.1-beta",运行cargo update——did版的变化.
  7. 上传了版本为0.1.1-beta的 crate library.1.
  8. app年运行cargo update次——did版发生变化.

Rust相关问答推荐

rust 蚀生命周期 行为

在执行其他工作的同时,从共享裁判后面的VEC中删除重复项

如何在嵌套的泛型 struct 中调用泛型方法?

期望一个具有固定大小 x 元素的数组,找到一个具有 y 元素的数组

为什么我需要 to_string 函数的参考?

Rust proc_macro 和 syn:解析空格

如何执行数组文字的编译时串联?

如何对一个特征的两个实现进行单元测试?

如何处理闭包中的生命周期以及作为参数和返回类型的闭包?

可选包装枚举的反序列化

.to_owned()、.clone() 和取消引用 (*) 之间有区别吗?

如何从borrow 的异步代码运行阻塞代码?

当没有实际结果时,如何在 Rust 中强制执行错误处理?

如何使用 Bincode 在 Rust 中序列化 Enum,同时保留 Enum 判别式而不是索引?

Rust 中的内存管理

如何将 &[T] 或 Vec<T> 转换为 Arc<Mutex<[T]>>?

在 Rust 中实现资源消耗的安全包装器

如何获取函数中borrow 的切片的第一部分?

从 Cranelift 发出 ASM

编写 TOML 文件以反序列化为 struct 中的枚举