#semver #cargo-version #cargo #versioning #semantic #terraform #evaluator

无需 std tf-semver

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

1 个稳定版本

1.0.17 2023年7月13日

#614数据结构

每月 下载 24
用于 tfswitcher

MIT/Apache

81KB
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::{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:RubyGems/Bundler for Ruby,npm for JavaScript,Composer for PHP,CocoaPods for Objective-C...

semver 包专门用于实现 Cargo 对语义版本控制的解释。

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

Cargo 对 SemVer 的支持范围在 Cargo 参考文档的“指定依赖项”章节中记录。


关于此分支

此分支是从主 semver 包分叉出来的,以支持 Terraform 版本约束中发现的 ~> 悲观版本控制语法。它还将默认的 OpCaret 更改为 Exact

此分支不太可能合并到主包中,因为 semver 只关注 Cargo 对语义版本控制的解释。


许可证

根据您的选择,此软件受 Apache 许可证 2.0 版MIT 许可证 许可。
除非您明确说明,否则您根据Apache-2.0许可协议提交的任何有意包含在本软件包中的贡献,应按照上述方式双授权,不附加任何额外条款或条件。

依赖项

约175KB