Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
103
third-party/vendor/semver/README.md
vendored
Normal file
103
third-party/vendor/semver/README.md
vendored
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
semver
|
||||
======
|
||||
|
||||
Semantic version parsing and comparison.
|
||||
|
||||
[](https://travis-ci.org/steveklabnik/semver)
|
||||
|
||||
[Documentation](https://steveklabnik.github.io/semver)
|
||||
|
||||
Semantic versioning (see http://semver.org/) is a set of rules for
|
||||
assigning version numbers.
|
||||
|
||||
## SemVer and the Rust ecosystem
|
||||
|
||||
Rust itself follows the SemVer specification, as does its standard libraries. The two are
|
||||
not tied together.
|
||||
|
||||
[Cargo](https://crates.io), Rust's package manager, uses SemVer to determine which versions of
|
||||
packages you need installed.
|
||||
|
||||
## Installation
|
||||
|
||||
To use `semver`, add this to your `[dependencies]` section:
|
||||
|
||||
```toml
|
||||
semver = "0.7.0"
|
||||
```
|
||||
|
||||
And this to your crate root:
|
||||
|
||||
```rust
|
||||
extern crate semver;
|
||||
```
|
||||
|
||||
## Versions
|
||||
|
||||
At its simplest, the `semver` crate allows you to construct `Version` objects using the `parse`
|
||||
method:
|
||||
|
||||
```rust
|
||||
use semver::Version;
|
||||
|
||||
assert!(Version::parse("1.2.3") == Ok(Version {
|
||||
major: 1,
|
||||
minor: 2,
|
||||
patch: 3,
|
||||
pre: vec!(),
|
||||
build: vec!(),
|
||||
}));
|
||||
```
|
||||
|
||||
If you have multiple `Version`s, you can use the usual comparison operators to compare them:
|
||||
|
||||
```rust
|
||||
use semver::Version;
|
||||
|
||||
assert!(Version::parse("1.2.3-alpha") != Version::parse("1.2.3-beta"));
|
||||
assert!(Version::parse("1.2.3-alpha2") > Version::parse("1.2.0"));
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
The `semver` crate also provides the ability to compare requirements, which are more complex
|
||||
comparisons.
|
||||
|
||||
For example, creating a requirement that only matches versions greater than or
|
||||
equal to 1.0.0:
|
||||
|
||||
```rust
|
||||
use semver::Version;
|
||||
use semver::VersionReq;
|
||||
|
||||
let r = VersionReq::parse(">= 1.0.0").unwrap();
|
||||
let v = Version::parse("1.0.0").unwrap();
|
||||
|
||||
assert!(r.to_string() == ">= 1.0.0".to_string());
|
||||
assert!(r.matches(&v))
|
||||
```
|
||||
|
||||
It also allows parsing of `~x.y.z` and `^x.y.z` requirements as defined at
|
||||
https://www.npmjs.org/doc/misc/semver.html
|
||||
|
||||
**Tilde requirements** specify a minimal version with some updates:
|
||||
|
||||
```notrust
|
||||
~1.2.3 := >=1.2.3 <1.3.0
|
||||
~1.2 := >=1.2.0 <1.3.0
|
||||
~1 := >=1.0.0 <2.0.0
|
||||
```
|
||||
|
||||
**Caret requirements** allow SemVer compatible updates to a specified version,
|
||||
`0.x` and `0.x+1` are not considered compatible, but `1.x` and `1.x+1` are.
|
||||
|
||||
`0.0.x` is not considered compatible with any other version.
|
||||
Missing minor and patch versions are desugared to `0` but allow flexibility for that value.
|
||||
|
||||
```notrust
|
||||
^1.2.3 := >=1.2.3 <2.0.0
|
||||
^0.2.3 := >=0.2.3 <0.3.0
|
||||
^0.0.3 := >=0.0.3 <0.0.4
|
||||
^0.0 := >=0.0.0 <0.1.0
|
||||
^0 := >=0.0.0 <1.0.0
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue