tiny-counter 0.1.0

Track event counts across time windows with fixed memory and fast queries
Documentation
//! Serialization format abstraction.
//!
//! Separates serialization format (HOW) from storage backend (WHERE).
//! Mix formats with any storage: FilePerEvent + JSON, Sqlite + bincode, etc.

use crate::{Result, SingleEventCounter};

/// Trait for serialization formats.
///
/// Implement this trait to add custom serialization formats (MessagePack, CBOR, etc.).
pub trait Formatter: Send + Sync {
    /// Serialize a SingleEventCounter to bytes.
    fn serialize(&self, value: &SingleEventCounter) -> Result<Vec<u8>>;

    /// Deserialize bytes to a SingleEventCounter.
    fn deserialize(&self, bytes: &[u8]) -> Result<SingleEventCounter>;

    /// Recommended file extension for this format.
    fn extension(&self) -> &'static str;
}

#[cfg(feature = "serde-bincode")]
mod bincode;

#[cfg(feature = "serde-json")]
mod json;

#[cfg(feature = "serde-bincode")]
pub use self::bincode::BincodeFormat;

#[cfg(feature = "serde-json")]
pub use json::JsonFormat;