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

no-std cw-semver

Cargo的语义版本(SemVer)解析器和评估器

1 个稳定版本

1.0.14 2022年12月19日

#314数据结构

Download history 751/week @ 2024-04-14 544/week @ 2024-04-21 1071/week @ 2024-04-28 480/week @ 2024-05-05 687/week @ 2024-05-12 557/week @ 2024-05-19 1079/week @ 2024-05-26 517/week @ 2024-06-02 1242/week @ 2024-06-09 642/week @ 2024-06-16 769/week @ 2024-06-23 543/week @ 2024-06-30 871/week @ 2024-07-07 826/week @ 2024-07-14 663/week @ 2024-07-21 655/week @ 2024-07-28

3,031 每月下载量
用于 29 个crate(9 个直接使用)

MIT/Apache

81KB
1.5K SLoC

semver

github crates.io docs.rs build status

Cargo的语义版本(SemVer)解析器和评估器。

语义版本(SemVer,见 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));
}

此crate的范围

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

semver crate旨在具体实现Cargo对语义版本的解释。

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

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


许可

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

依赖

~175KB