#semver #version #semantic #compare

semver_constraints

更稳健和细致的语义版本约束

1 个不稳定版本

0.1.0 2019年4月3日

#88 in #semantic


用于 elba

MIT 许可证

42KB
899

semver_constraints

Build Status

...因为我不喜欢 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.* == 00.0.* == 0.0。为了简化解析,<<= 必须始终在 >>= 之前,就像 Pub 一样。像 < 1 > 2 这样的无意义需求在 semver 下的有效解析在这里会被捕获。总的来说,语法比 Cargo 严格得多,无意义约束在创建约束时立即被捕获。

依赖

~3MB
~51K SLoC