[][src]Crate ids_service

Library that allows generating unique ids. It tried to keep cache filled using background threads to fill it. If the cache is empty (the number of requests is too high) an id is calculated on the fly. This will slow down obtaining the id but there is no error when the cache is empty. To generate unique ids the library uses an array of bytes with values from a random number generator and a timestamp as nanoseconds since January 1, 1970 UTC and finally create an hash from both data's. The size of random block is equal to 2 * the size of hash sha512 = 128 bytes. The size of data block to calculate an unique id using sha512 equal 128 bytes random + 8 bytes timestamp.

The hash algorithm can be one from crypto::sha3::Sha3Mode The id can be:

  • Vec
  • String encoded hexadecimal lower case
  • String as Base64
  • String as Base32

Quick Start

extern crate ids_service;

use crate::ids_service::crypto_hash::{Encode,IdsService};

fn main() {

    /*
     * Create an ids service with:
     * Cache size = 10'000
     * hash algo. = sha512
     * A pool of 20 threads
     */
    let mut ids = IdsService::default();
    ids.start();
    println!("Get an id: {}", ids.get_id().as_hex());
    println!("Get another id: {}", ids.get_id().as_base64());
    println!("Current numbers of items in cache: {}", ids.get_cache_len());
    // Graceful Shutdown and Cleanup
    ids.stop();

}
extern crate ids_service;

use crate::ids_service::crypto_hash::*;

fn main() {

    println!("Create an id sha512 without the service: {}", create_id_as_sha512());
    println!("Create an id sha256 without the service: {}", create_id_as_sha256());

}

The lib use simplelog see for configuration: crates.io Rust Package Registry SimpleLog .

Modules

crypto_hash

Module using crypto. hash