fre 0.4.1

A command line frecency tracking tool
Documentation
use super::super::stats::serialize;
use super::*;

#[derive(Serialize, Deserialize, Debug)]
pub struct FrecencyStoreSerializer {
    reference_time: f64,
    half_life: f64,
    items: Vec<serialize::ItemStatsSerializer>,
}

impl From<FrecencyStore> for FrecencyStoreSerializer {
    fn from(store: FrecencyStore) -> Self {
        let items = store
            .items
            .into_iter()
            .map(serialize::ItemStatsSerializer::from)
            .collect();

        FrecencyStoreSerializer {
            reference_time: store.reference_time,
            half_life: store.half_life,
            items,
        }
    }
}

impl From<FrecencyStoreSerializer> for FrecencyStore {
    fn from(store: FrecencyStoreSerializer) -> Self {
        let ref_time = store.reference_time;
        let half_life = store.half_life;
        let items = store
            .items
            .into_iter()
            .map(|s| s.into_item_stats(ref_time, half_life))
            .collect();

        FrecencyStore {
            reference_time: store.reference_time,
            half_life: store.half_life,
            items,
        }
    }
}