Crate versions[−][src]
Expand description
A library for parsing and comparing software version numbers.
We like to give version numbers to our software in a myriad of different ways. Some ways follow strict guidelines for incrementing and comparison. Some follow conventional wisdom and are generally self-consistent. Some are just plain asinine. This library provides a means of parsing and comparing any style of versioning, be it a nice Semantic Version like this:
1.2.3-r1
…or a monstrosity like this:
2:10.2+0.0093r3+1-1
Usage
If you’re parsing several version numbers that don’t follow a single scheme
(say, as in system packages), then use the Versioning
type and its
parser Versioning::new
. Otherwise, each main type - SemVer
,
Version
, or Mess
- can be parsed on their own via the new
method
(e.g. SemVer::new
).
Examples
use versions::Versioning; let good = Versioning::new("1.6.0").unwrap(); let evil = Versioning::new("1.6.0a+2014+m872b87e73dfb-1").unwrap(); assert!(good.is_ideal()); // It parsed as a `SemVer`. assert!(evil.is_complex()); // It parsed as a `Mess`. assert!(good > evil); // We can compare them anyway!
Usage with nom
In constructing your own nom
parsers, you can
integrate the parsers used for the types in this crate via
SemVer::parse
, Version::parse
, and Mess::parse
.
Features
You can enable Serde
support for serialization and
deserialization with the serde
feature.
Structs
Chunk | A logical unit of a version number. |
Chunks | Multiple |
Mess | A complex version number with no specific structure. |
SemVer | An ideal version number that conforms to Semantic Versioning. |
Version | A version number with decent structure and comparison logic. |
Enums
MChunk | Possible values of a section of a |
Sep | Symbols that separate groups of digits/letters in a version number. Used in
the |
Unit | A single unit of a version number. May be digits or a string of characters. |
Versioning | A top-level Versioning type which acts as a wrapper for the more specific types. |