Crate versions[−][src]
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. |