rust_anilist/models/
media.rs1use serde::{Deserialize, Serialize};
7
8use super::{Anime, Format, Manga};
9
10#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
12pub enum Media {
13 Anime(Anime),
15 Manga(Manga),
17 #[default]
21 Unknown,
22}
23
24impl Media {
25 pub fn id(&self) -> i64 {
27 match self {
28 Media::Anime(anime) => anime.id,
29 Media::Manga(manga) => manga.id,
30 Media::Unknown => 0,
31 }
32 }
33
34 pub fn title(&self) -> &str {
36 match self {
37 Media::Anime(anime) => anime.title.romaji(),
38 Media::Manga(manga) => manga.title.romaji(),
39 Media::Unknown => "Unknown",
40 }
41 }
42
43 pub fn format(&self) -> Option<&Format> {
45 match self {
46 Media::Anime(anime) => Some(&anime.format),
47 Media::Manga(manga) => Some(&manga.format),
48 Media::Unknown => None,
49 }
50 }
51}
52
53impl From<Anime> for Media {
54 fn from(anime: Anime) -> Self {
55 Media::Anime(anime)
56 }
57}
58
59impl From<Manga> for Media {
60 fn from(manga: Manga) -> Self {
61 Media::Manga(manga)
62 }
63}