• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

benches/25-Apr-2025-2519

src/25-Apr-2025-2,1801,359

tests/25-Apr-2025-903749

.cargo-checksum.jsonD25-Apr-20251.8 KiB11

Android.bpD25-Apr-2025903 3733

Cargo.tomlD25-Apr-20251.6 KiB7564

LICENSED25-Apr-20259.5 KiB177150

LICENSE-APACHED25-Apr-20259.5 KiB177150

LICENSE-MITD25-Apr-20251,023 2421

METADATAD25-Apr-2025398 1817

MODULE_LICENSE_APACHE2D25-Apr-20250

README.mdD25-Apr-20252.9 KiB8561

TEST_MAPPINGD25-Apr-2025244 1211

build.rsD25-Apr-20253.2 KiB8956

cargo_embargo.jsonD25-Apr-2025238 1817

README.md

1semver
2======
3
4[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/semver-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/semver)
5[<img alt="crates.io" src="https://img.shields.io/crates/v/semver.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/semver)
6[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-semver-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/semver)
7[<img alt="build status" src="https://img.shields.io/github/actions/workflow/status/dtolnay/semver/ci.yml?branch=master&style=for-the-badge" height="20">](https://github.com/dtolnay/semver/actions?query=branch%3Amaster)
8
9A parser and evaluator for Cargo's flavor of Semantic Versioning.
10
11Semantic Versioning (see <https://semver.org>) is a guideline for how version
12numbers are assigned and incremented. It is widely followed within the
13Cargo/crates.io ecosystem for Rust.
14
15```toml
16[dependencies]
17semver = "1.0"
18```
19
20*Compiler support: requires rustc 1.31+*
21
22<br>
23
24## Example
25
26```rust
27use semver::{BuildMetadata, Prerelease, Version, VersionReq};
28
29fn main() {
30    let req = VersionReq::parse(">=1.2.3, <1.8.0").unwrap();
31
32    // Check whether this requirement matches version 1.2.3-alpha.1 (no)
33    let version = Version {
34        major: 1,
35        minor: 2,
36        patch: 3,
37        pre: Prerelease::new("alpha.1").unwrap(),
38        build: BuildMetadata::EMPTY,
39    };
40    assert!(!req.matches(&version));
41
42    // Check whether it matches 1.3.0 (yes it does)
43    let version = Version::parse("1.3.0").unwrap();
44    assert!(req.matches(&version));
45}
46```
47
48<br>
49
50## Scope of this crate
51
52Besides Cargo, several other package ecosystems and package managers for other
53languages also use SemVer:&ensp;RubyGems/Bundler for Ruby, npm for JavaScript,
54Composer for PHP, CocoaPods for Objective-C...
55
56The `semver` crate is specifically intended to implement Cargo's interpretation
57of Semantic Versioning.
58
59Where the various tools differ in their interpretation or implementation of the
60spec, this crate follows the implementation choices made by Cargo. If you are
61operating on version numbers from some other package ecosystem, you will want to
62use a different semver library which is appropriate to that ecosystem.
63
64The extent of Cargo's SemVer support is documented in the *[Specifying
65Dependencies]* chapter of the Cargo reference.
66
67[Specifying Dependencies]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html
68
69<br>
70
71#### License
72
73<sup>
74Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
752.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
76</sup>
77
78<br>
79
80<sub>
81Unless you explicitly state otherwise, any contribution intentionally submitted
82for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
83be dual licensed as above, without any additional terms or conditions.
84</sub>
85