remcached 0.3.0

Caching system designed for efficient storage and retrieval of entities from remote repositories (REST APIs, Database, ...etc)
Documentation
use std::future::Future;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering::Relaxed;
use std::time::Instant;

pub async fn async_measure<F, T>(counter: &AtomicU64, elapsed: &AtomicU64, f: F) -> T
where
    F: Future<Output=T>,
    T: Send,
{
    let start = Instant::now();
    let result = f.await;
    let elapsed_ms = start.elapsed().as_millis() as u64;
    elapsed.fetch_add(elapsed_ms, Relaxed);
    counter.fetch_add(1, Relaxed);
    result
}

pub fn measure<F, T>(counter: &AtomicU64, elapsed: &AtomicU64, f: F) -> T
where
    F: FnOnce() -> T,
    T: Send,
{
    let start = Instant::now();
    let result = f();
    let elapsed_ms = start.elapsed().as_millis() as u64;
    elapsed.fetch_add(elapsed_ms, Relaxed);
    counter.fetch_add(1, Relaxed);
    result
}