pub fn compare_to<A, B>(a: A, b: B, operator: Cmp) -> Result<bool, ()>Expand description
Compare two version number strings to each other and test against the given comparison
operator.
If either version number string is invalid an error is returned.
ยงExamples
use version_compare::{Cmp, compare_to};
assert!(compare_to("1.2.3", "1.2.3", Cmp::Eq).unwrap());
assert!(compare_to("1.2.3", "1.2.3", Cmp::Le).unwrap());
assert!(compare_to("1.2.3", "1.2.4", Cmp::Lt).unwrap());
assert!(compare_to("1", "0.1", Cmp::Gt).unwrap());
assert!(compare_to("1", "0.1", Cmp::Ge).unwrap());Examples found in repository?
examples/example.rs (line 26)
12fn main() {
13 let a = "1.2";
14 let b = "1.5.1";
15
16 // The following comparison operators are used:
17 // - Cmp::Eq -> Equal
18 // - Cmp::Ne -> Not equal
19 // - Cmp::Lt -> Less than
20 // - Cmp::Le -> Less than or equal
21 // - Cmp::Ge -> Greater than or equal
22 // - Cmp::Gt -> Greater than
23
24 // Easily compare version strings
25 assert_eq!(compare(a, b), Ok(Cmp::Lt));
26 assert_eq!(compare_to(a, b, Cmp::Le), Ok(true));
27 assert_eq!(compare_to(a, b, Cmp::Gt), Ok(false));
28
29 // Parse and wrap version strings as a Version
30 let a = Version::from(a).unwrap();
31 let b = Version::from(b).unwrap();
32
33 // The Version can easily be compared with
34 assert_eq!(a < b, true);
35 assert_eq!(a <= b, true);
36 assert_eq!(a > b, false);
37 assert_eq!(a != b, true);
38 assert_eq!(a.compare(&b), Cmp::Lt);
39 assert_eq!(a.compare_to(&b, Cmp::Lt), true);
40
41 // Or match the comparison operators
42 match a.compare(b) {
43 Cmp::Lt => println!("Version a is less than b"),
44 Cmp::Eq => println!("Version a is equal to b"),
45 Cmp::Gt => println!("Version a is greater than b"),
46 _ => unreachable!(),
47 }
48}