#semver #cargo #version #semantic #versioning #evaluator #flavor

无std semver-eq

Cargo的语义版本控制风格的解析器和评估器

1 个稳定版本

1.0.22 2024年4月26日

#305数据结构


用于 wasmenv

MIT/Apache

82KB
1.5K SLoC

semver

github crates.io docs.rs build status

Cargo的语义版本控制风格的解析器和评估器。

语义版本控制(见 https://semver.org)是一套关于如何分配和递增版本号的指南。在Rust的Cargo/crates.io生态系统中被广泛遵循。

[dependencies]
semver = "1.0"

编译器支持:需要rustc 1.31+


示例

use semver_eq::{BuildMetadata, Prerelease, Version, VersionReq};

fn main() {
    let req = VersionReq::parse(">=1.2.3, <1.8.0").unwrap();

    // Check whether this requirement matches version 1.2.3-alpha.1 (no)
    let version = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: Prerelease::new("alpha.1").unwrap(),
        build: BuildMetadata::EMPTY,
    };
    assert!(!req.matches(&version));

    // Check whether it matches 1.3.0 (yes it does)
    let version = Version::parse("1.3.0").unwrap();
    assert!(req.matches(&version));
}

本包的范围

除了Cargo,其他几种语言的包生态系统和包管理器也使用SemVer:Ruby的RubyGems/Bundler、JavaScript的npm、PHP的Composer、Objective-C的CocoaPods...

semver 包旨在实现Cargo对语义版本控制的解释。

在不同工具对规范的解释或实现存在差异时,本包遵循Cargo做出的实现选择。如果您正在处理来自其他包生态系统的版本号,您将需要使用适合该生态系统的不同semver库。

Cargo对SemVer的支持范围在Cargo参考的《指定依赖》章节中有所说明。


许可证

根据您的选择,受Apache License, Version 2.0MIT许可证约束。
除非您明确声明,否则您提交给本包的任何贡献,根据Apache-2.0许可证定义,都应作为上述的双许可,而不附加任何额外条款或条件。

依赖项

~170KB