ids_service 2.1.3

Library that allows to generate unique Ids.
Documentation
// SPDX-License-Identifier: MIT
//! Comprehensive example for `crypto_hash`.

use ids_service::common::*;
use ids_service::crypto_hash::*;
use log::info;
use simplelog::{Config, LevelFilter, SimpleLogger};

fn main() {
    let _ = SimpleLogger::init(LevelFilter::Info, Config::default());

    // Service with custom cache size, SHA-256 and CPU-count threads
    let cpu_count = std::thread::available_parallelism()
        .map(|n| n.get())
        .unwrap_or(4);

    let mut ids = IdsService::new(10_000, Sha3Mode::Sha3_256, Some(cpu_count));
    ids.start();

    let _ = ids.filled_at_percent_event(10).recv();
    info!("cache len: {}", ids.get_cache_len());
    info!("hex    : {}", ids.get_id().as_hex());
    info!("base64 : {}", ids.get_id().as_base64());

    // Service without starting (on-the-fly generation)
    let mut ids2 = IdsService::default();
    info!("on-the-fly: {}", ids2.get_id().as_hex());

    // Resize cache
    let mut ids3 = IdsService::default();
    ids3.start();
    let _ = ids3.filled_event().recv();
    info!("before resize: {}", ids3.get_cache_len());

    ids3.set_cache_size(150_000);
    let _ = ids3.filled_event().recv();
    info!("after resize: {}", ids3.get_cache_len());

    ids.stop();
    ids2.stop();
    ids3.stop();
}