commit | 4fdaade62fc745e21321321d72f0dcf555642a51 | [log] [tgz] |
---|---|---|
author | Xin Li <[email protected]> | Mon Apr 29 22:54:43 2024 +0000 |
committer | Automerger Merge Worker <[email protected]> | Mon Apr 29 22:54:43 2024 +0000 |
tree | a91f006deda4c22a2b76a5c38b0a7a155e8989bd | |
parent | 91f77422ca8a68a659e8dd174483fb1653d5447f [diff] | |
parent | 544ea6025bcc269016956dc8c3bbb17a38d5eaad [diff] |
[automerger skipped] Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future am: 544ea6025b -s ours am skip reason: Merged-In I787822576c34b2840b0c96501807eb5f233a2004 with SHA-1 802365cf35 is already in history Original change: https://googleplex-android-review.googlesource.com/c/platform/external/rust/crates/semver/+/27144765 Change-Id: Ic35c4bb1cbe5ab273fc97c1046739528748c0940 Signed-off-by: Automerger Merge Worker <[email protected]>
A parser and evaluator for Cargo's flavor of Semantic Versioning.
Semantic Versioning (see https://semver.org) is a guideline for how version numbers are assigned and incremented. It is widely followed within the Cargo/crates.io ecosystem for Rust.
[dependencies] semver = "1.0"
Compiler support: requires 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)); }
Besides Cargo, several other package ecosystems and package managers for other languages also use SemVer: RubyGems/Bundler for Ruby, npm for JavaScript, Composer for PHP, CocoaPods for Objective-C...
The semver
crate is specifically intended to implement Cargo's interpretation of Semantic Versioning.
Where the various tools differ in their interpretation or implementation of the spec, this crate follows the implementation choices made by Cargo. If you are operating on version numbers from some other package ecosystem, you will want to use a different semver library which is appropriate to that ecosystem.
The extent of Cargo's SemVer support is documented in the Specifying Dependencies chapter of the Cargo reference.