mal-api 2.0.3

An asynchronous MyAnimeList (MAL) API library for Rust
Documentation
use std::fmt::Display;

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct User {
    pub id: u32,
    pub name: String,
    pub picture: String,
    pub gender: Option<String>,
    pub birthday: Option<String>,
    pub location: Option<String>,
    pub joined_at: Option<String>,
    pub anime_statistics: Option<AnimeStatistics>,
    pub time_zone: Option<String>,
    pub is_supporter: bool,
}

impl Display for User {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", serde_json::to_string(&self).unwrap_or_default())
    }
}

#[derive(Debug, Serialize, Deserialize)]
pub struct AnimeStatistics {
    pub num_items_watching: u32,
    pub num_items_completed: u32,
    pub num_items_on_hold: u32,
    pub num_items_dropped: u32,
    pub num_items_plan_to_watch: u32,
    pub num_items: u32,
    pub num_days_watched: f32,
    pub num_days_watching: f32,
    pub num_days_completed: f32,
    pub num_days_on_hold: f32,
    pub num_days_dropped: f32,
    pub num_days: f32,
    pub num_episodes: u32,
    pub num_times_rewatched: u32,
    pub mean_score: f32,
}

impl Display for AnimeStatistics {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", serde_json::to_string(&self).unwrap_or_default())
    }
}