farid 0.1.2

Extensible Unique Id Generation for Rust.
Documentation
use farid::*;
use std::fmt::Display;

#[test]
fn test_numbers() {
    let mut gen: Gen<usize> = Gen::init(0);

    println!("{:?}", gen.id());

    let id = gen.id();
    println!("{}", id);

    println!("{:?}", gen.id());

    gen.free(id);

    println!("{:?}", gen.id());
    println!("{:?}", gen.id());
    println!("{:?}", gen.id());
}

#[derive(Debug, Clone)]
struct RegNo {
    year: usize,
    branch: String,
    nonce: usize,
}

impl Advance for RegNo {
    fn advance(&mut self) {
        self.nonce += 1;
    }
}

impl Display for RegNo {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}{}{:0>4}", self.year % 100, self.branch, self.nonce)
    }
}

#[test]
fn test_custom_types() {
    let mut id: Gen<RegNo> = Gen::init(RegNo {
        year: 2017,
        branch: String::from("BCE"),
        nonce: 0,
    });

    println!("{}", id.id());
    println!("{}", id.id());
    println!("{}", id.id());
}