Expand description
A Semantic Versioning 2.0.0 parser and comparator.
§Usage
use semver::parse;
let v = parse("1.2.3").unwrap();
assert_eq!(v.major, 1);
assert_eq!(v.minor, 2);
assert_eq!(v.patch, 3);
let v = parse("1.0.0-alpha.1+build.123").unwrap();
assert_eq!(v.to_string(), "1.0.0-alpha.1+build.123");Parsing follows the full SemVer 2.0.0 BNF grammar, including pre-release identifiers with hyphens, leading-zero rejection on numeric identifiers, and build metadata validation.
§Version struct
The Version struct borrows its pre-release and build-metadata strings
from the input, so no allocation is needed for parsing.
§Precedence
Version implements PartialEq, Eq, PartialOrd, and Ord
following the SemVer precedence rules:
- Compare
major,minor,patchnumerically. - A pre-release version has lower precedence than a normal version.
- Pre-release identifiers are compared left-to-right: numeric identifiers are compared numerically, alphanumeric identifiers are compared lexically (ASCII), and numeric always precedes alpha.
- A longer pre-release has higher precedence when all preceding identifiers are equal.
- Build metadata is ignored for equality and ordering.
use semver::parse;
assert!(parse("1.0.0-alpha").unwrap() < parse("1.0.0").unwrap());
assert!(parse("1.0.0-beta.2").unwrap() < parse("1.0.0-beta.11").unwrap());
assert!(parse("1.0.0-1").unwrap() < parse("1.0.0-alpha").unwrap());
assert_eq!(parse("1.0.0+build1").unwrap(), parse("1.0.0+build2").unwrap());§Serde support
Enable the serde feature to serialize/deserialize Version as a string:
[dependencies]
semver = { path = "../semver", features = ["serde"] }use serde_json;
use semver::parse;
let v: semver::Version<'_> = serde_json::from_str("\"1.2.3-alpha+build\"").unwrap();
assert_eq!(v, parse("1.2.3-alpha+build").unwrap());§Error handling
use semver::parse;
assert!(parse("01.2.3").is_err());
assert!(parse("1.0.0-").is_err());
assert!(parse("").is_err());Structs§
- Build
Metadata - The build metadata portion of a SemVer version (after the
+). - PreRelease
- The pre-release portion of a SemVer version (after the
-). - Version
- A parsed SemVer version (Semantic Versioning 2.0.0).
Enums§
- Identifier
- A parsed pre-release identifier: either a numeric value or an alphanumeric string.
- Parse
Error - Errors that can occur when parsing a SemVer version string.
Functions§
- parse
- Parses a SemVer version string.