mod enums;
mod ids;
mod model;
mod page;
mod token;
mod tone;
mod user;
pub use enums::{ArchitectureVersion, Format, Gear, License, Size, ToneSort, UserSort};
pub use ids::{MakeId, ModelId, TagId, ToneId, UserId};
pub use model::Model;
pub use page::Page;
pub use token::Tokens;
pub use tone::{EmbeddedUser, Make, Tag, Tone};
pub use user::{PublicUser, User};
pub(crate) fn de_null_as_default<'de, D, T>(de: D) -> Result<T, D::Error>
where
D: serde::Deserializer<'de>,
T: Default + serde::Deserialize<'de>,
{
use serde::Deserialize as _;
Ok(Option::<T>::deserialize(de)?.unwrap_or_default())
}