pub mod concurrency;
pub mod fs;
pub mod hasher;
pub mod logging;
pub mod paginate;
pub mod progress_bar;
pub mod read_progress;
pub mod str;
pub use crate::util::read_progress::ReadProgress;
pub use paginate::{paginate, paginate_with_total};
pub mod oxen_date_format {
use chrono::{DateTime, Local};
use serde::{self, Deserialize, Deserializer, Serializer};
pub const FORMAT: &str = "%a, %d %b %Y %H:%M:%S %z";
pub fn serialize<S>(date: &DateTime<Local>, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let s = format!("{}", date.format(FORMAT));
serializer.serialize_str(&s)
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<DateTime<Local>, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
DateTime::parse_from_str(&s, FORMAT)
.map(Into::into)
.map_err(serde::de::Error::custom)
}
}