#version #semver #versioning #numbers #build #manage #offers

simple-version

The easiest way to manage versions in rust

1 stable release

new 2.1.0 Jan 3, 2025
1.2.1 Sep 19, 2024
1.2.0 Sep 4, 2024
1.1.0 Sep 3, 2024

#11 in #semantic-version

32 downloads per month

MIT license

10KB
89 lines

simple-version

Github Crates.io Docs.rs Build

A small Rust library that provides a Version<T> type for handling semantic versioning, including an optional build number. It also offers a version_from_pkg! macro to embed the crate's compile-time CARGO_PKG_VERSION directly into your code.


Examples

1. create a new Version object

(without a build number)

use simple_version::Version;

let v = Version::<u32>::new(1, 2, 3);

println!("{}", v);  // 1.2.3

2. create a new Version object

(with a build number)

use simple_version::Version;

let v = Version::<u32>::new(1, 2, 3).build(4);

println!("{}", v);  // 1.2.3+4

3. create a new Version object

(using the Cargo package version)

# Cargo.toml

[package]
name = "..."
version = "1.2.3"
...
use simple_version::{Version, version_from_pkg};

let v: Version<u32> = version_from_pkg!(u32);

println!("{}", v);  // 1.2.3

4. Compare between two versions

use simple_version::Version;

let v1 = Version::<u32>::new(1, 999, 999);
let v2 = Version::<u32>::new(2, 0, 0);

assert!(v1 < v2);

5. Compare between two versions

(with exceptions)

use simple_version::Version;

let v1 = Version::<u32>::new(1, 0, 0).build(1); // v1 has a build number.
let v2 = Version::<u32>::new(1, 0, 0);          // v2 does not.

assert!(v1 > v2);   // In this case, v1 is greater.

No runtime deps