1个不稳定版本
使用旧的Rust 2015
0.9.0 | 2020年1月8日 |
---|
#2957 in 解析器实现
73KB
1.5K SLoC
semver
语义版本解析和比较。
语义版本控制(参见 https://semver.org/)是一组用于分配版本号的规则。
SemVer 和 Rust生态系统
Rust 本身遵循 SemVer 规范,其标准库也是如此。这两者并不相互依赖。
Cargo,Rust 的包管理器,使用 SemVer 来确定需要安装的包的版本。
安装
要使用 semver
,将其添加到您的 [dependencies]
部分
semver = "0.9.0"
并将其添加到您的crate根目录
extern crate semver;
版本
在 simplest的情况下,semver
crate 允许您使用 parse
方法构建 Version
对象
use semver::Version;
assert!(Version::parse("1.2.3") == Ok(Version {
major: 1,
minor: 2,
patch: 3,
pre: vec!(),
build: vec!(),
}));
如果您有多个 Version
,您可以使用常规的比较运算符来比较它们
use semver::Version;
assert!(Version::parse("1.2.3-alpha") != Version::parse("1.2.3-beta"));
assert!(Version::parse("1.2.3-alpha2") > Version::parse("1.2.0"));
需求
semver
crate 还提供了比较需求的能力,这是一种更复杂的比较。
例如,创建一个仅匹配版本大于或等于 1.0.0 的需求
use semver::Version;
use semver::VersionReq;
let r = VersionReq::parse(">= 1.0.0").unwrap();
let v = Version::parse("1.0.0").unwrap();
assert!(r.to_string() == ">= 1.0.0".to_string());
assert!(r.matches(&v))
它还允许解析 ~x.y.z
和 ^x.y.z
需求,如 https://npmjs.net.cn/doc/misc/semver.html 中定义
波浪号需求 指定一个带有一些更新的最小版本
~1.2.3 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.3.0
~1 := >=1.0.0 <2.0.0
插入符号需求 允许对指定版本进行 SemVer 兼容的更新,0.x
和 0.x+1
不被视为兼容,但 1.x
和 1.x+1
是。
0.0.x
不被视为与任何其他版本兼容。缺少的次要版本和补丁版本将被简化为0
,但允许对此值的灵活性。
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
^0.0 := >=0.0.0 <0.1.0
^0 := >=0.0.0 <1.0.0
依赖项
~0.1–4MB
~75K SLoC