journalmap 0.1.1

Journaling datatypes for easy undo, redo & version control
Documentation
#![doc = include_str!("../README.md")]

mod journalmap;
mod journalset;
mod journalvec;

pub use journalmap::JournalMap;
pub use journalmap::JournalMapJournal;
pub use journalset::JournalSet;
pub use journalset::JournalSetJournal;
pub use journalvec::JournalVec;
pub use journalvec::JournalVecJournal;

#[cfg(feature = "serde")]
use serde::Deserialize;
#[cfg(feature = "serde")]
use serde::Serialize;

#[derive(Debug)]
pub enum JournalError<T> {
    /// Error thrown when a tag already exists in a journal.
    TagExists { tag: T },
}

#[derive(Clone, Copy)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub(crate) struct Tag<T> {
    tag: T,
}

impl<T: std::fmt::Debug> std::fmt::Debug for Tag<T> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "[T] {:?}", self.tag)
    }
}