1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*!
A Rust library for comparing version. It supports some versioning styles(not only for X.Y.Z).

## Example

```rust
use vercomp::{Stage, Version};

// Version.number is the number of the version. It supports "==", "!=", ">=", ">", "<=" and "<".
let version_1 = Version::from("1.2.3");
let version_2 = Version::from("1-2-3");
if version_1.number == version_2.number {
    println!("version_1 equals version_2.");
}
let version_3 = Version::from("1/2/3");
let version_4 = Version::from("1~2");
if version_3.number > version_4.number {
    println!("version_3 is greater than version_4.");
}
let version_5 = Version::from("1:2");
let version_6 = Version::from("1;2;3");
if version_5.number < version_6.number {
    println!("version_5 is less than version_6.");
}

// Version.stage is the stage of the version. It only supports "==" and "!=".
let version_7 = Version::from("1.2.3-Alpha");
if version_7.stage == Stage::Alpha {
    println!("version_7 is an alpha version.");
}
let _version_8 = Version::from("1.2.3-Beta");
let _version_9 = Version::from("1.2.3");
// if _version_8.stage > _version_9.stage {
    // Compile error
    // Version.stage can not use ">=", ">", "<=" and "<".
// }
// "CASE INSENSITIVE"
// Stage::Alpha   <= Contain alpha
// Stage::Beta    <= Contain beta
// Stage::Dev     <= Contain dev
// Stage::Nightly <= Contain nightly
// Stage::Rc      <= Contain rc
// Stage::Stable  <= others
```
*/
mod number;
mod stage;
mod version;

pub use crate::stage::Stage;
pub use crate::version::Version;