use crate::id::JournalId;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(transparent)]
pub struct JournalWriterId(JournalId);
impl JournalWriterId {
pub fn new() -> Self {
JournalWriterId(JournalId::new())
}
pub fn from_journal_id(journal_id: JournalId) -> Self {
JournalWriterId(journal_id)
}
pub fn as_journal_id(&self) -> &JournalId {
&self.0
}
pub fn into_journal_id(self) -> JournalId {
self.0
}
}
impl Default for JournalWriterId {
fn default() -> Self {
Self::new()
}
}
impl fmt::Display for JournalWriterId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "journal_writer_{}", self.0)
}
}
impl From<JournalId> for JournalWriterId {
fn from(journal_id: JournalId) -> Self {
JournalWriterId(journal_id)
}
}
impl From<JournalWriterId> for JournalId {
fn from(id: JournalWriterId) -> Self {
id.0
}
}
impl AsRef<JournalId> for JournalWriterId {
fn as_ref(&self) -> &JournalId {
&self.0
}
}