use core::fmt;
use serde::Deserialize;
#[derive(Deserialize, Debug, Clone)]
pub struct SafebooruPost {
pub id: u32,
pub score: Option<i32>,
pub height: u32,
pub width: u32,
pub hash: String,
pub tags: String,
pub image: String,
pub change: u32,
pub rating: SafebooruRating,
}
#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "lowercase")]
pub enum SafebooruRating {
Safe,
General,
Questionable,
Explicit,
}
impl From<SafebooruRating> for String {
fn from(rating: SafebooruRating) -> String {
rating.to_string()
}
}
impl fmt::Display for SafebooruRating {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let tag = format!("{:?}", self).to_lowercase();
write!(f, "{tag}")
}
}