version_math/
version-math.rs

1
2use std::env;
3
4use version_operators::Version;
5
6
7/// Parses command-line arguments and returns vector from math operation(s)
8///
9/// ## Example
10///
11/// ```bash
12/// cargo run --example version-math '1.14.3' '-add' '1.14.4'
13/// #> [2, 28, 4]
14/// ```
15fn main() {
16    let mut iter = env::args().skip(1);
17    let mut version_args: Vec<String> = vec![];
18    loop {
19        if version_args.len() < 3 {
20            let arg = iter.next();
21            match arg {
22                Some(value) => version_args.push(value),
23                _ => break,
24            }
25        } else {
26            let left = Version::from_str(&version_args[0]);
27            let operator: &str = &version_args[1].to_owned();
28            let right = Version::from_str(&version_args[2]);
29            let result = match operator {
30                "+" | "-add" => left + right,
31                "-" | "-sub" => left - right,
32                _ => panic!("Unrecognized operator! Try '+'/'-add' or '-'/'-sub'"),
33            };
34            println!("{:?}", result.to_vector());
35            version_args = vec![];
36        }
37    }
38}
39