1 个不稳定版本
0.1.0 | 2019年4月3日 |
---|
#88 in #semantic
用于 elba
42KB
899 行
semver_constraints
...因为我不喜欢 semver::VersionReq
.
使用方法
将此添加到您的 Cargo.toml
[dependencies]
# ...snip
# you'll probably want to use versions if you're using version
# constraints
semver = "0.9"
# the actual constraints library
semver_constraints = "0.1"
# if you want to use serde:
# semver_constraints = { version = "0.1", features = ["serde"] }
查看 crate 文档以获取动机和 API 信息。
许可证
semver_constraints 在 MIT 许可证 下分发。
lib.rs
:
定义了版本约束的修改后语法。
NIH?
semver crate 的 Version
是好的。不好的是他们的 VersionReq.
我们之所以自己开发而不是使用类似 semver crate 的东西,是因为 elba 的需求与 semver 提供的内容冲突。semver 提供的谓词向量方法过于灵活,这使得验证版本和执行操作(检查一个范围是否是另一个范围的子集等)变得更难。semver crate 还提供了一些不必要的操作。
相反,此模块在需要灵活性的地方添加了功能,在不需要的地方删除了功能,以适应 elba。
功能
elba 中的版本借鉴了 Cargo 和 Pub (Dart) 版本化的许多好想法。我们遵循 Cargo 的兼容性规则,为 0.* 和 0.0.* 版本提供更不稳定的包。此外,我们还在省略符号时遵循 Cargo 的规则。然而,我们故意省略了星号表示法,因为它是不必要的;0.* == 0
,0.0.* == 0.0
。为了简化解析,<
或 <=
必须始终在 >
或 >=
之前,就像 Pub 一样。像 < 1 > 2
这样的无意义需求在 semver 下的有效解析在这里会被捕获。总的来说,语法比 Cargo 严格得多,无意义约束在创建约束时立即被捕获。
依赖
~3MB
~51K SLoC