feedparser_rs/types/
version.rs1use std::fmt;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5pub enum FeedVersion {
6 Rss090,
8 Rss091Netscape,
10 Rss091Userland,
12 Rss092,
14 Rss10,
16 Rss20,
18 Atom03,
20 Atom10,
22 JsonFeed10,
24 JsonFeed11,
26 #[default]
28 Unknown,
29}
30
31impl FeedVersion {
32 #[must_use]
43 pub const fn as_str(&self) -> &'static str {
44 match self {
45 Self::Rss090 => "rss090",
46 Self::Rss091Netscape => "rss091n",
47 Self::Rss091Userland => "rss091u",
48 Self::Rss092 => "rss092",
49 Self::Rss10 => "rss10",
50 Self::Rss20 => "rss20",
51 Self::Atom03 => "atom03",
52 Self::Atom10 => "atom10",
53 Self::JsonFeed10 => "json10",
54 Self::JsonFeed11 => "json11",
55 Self::Unknown => "",
56 }
57 }
58}
59
60impl fmt::Display for FeedVersion {
61 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
62 write!(f, "{}", self.as_str())
63 }
64}
65
66#[cfg(test)]
67mod tests {
68 use super::*;
69
70 #[test]
71 fn test_version_as_str() {
72 assert_eq!(FeedVersion::Rss20.as_str(), "rss20");
73 assert_eq!(FeedVersion::Atom10.as_str(), "atom10");
74 assert_eq!(FeedVersion::Unknown.as_str(), "");
75 }
76
77 #[test]
78 fn test_version_display() {
79 assert_eq!(format!("{}", FeedVersion::Rss20), "rss20");
80 assert_eq!(format!("{}", FeedVersion::Atom10), "atom10");
81 }
82
83 #[test]
84 fn test_version_default() {
85 let v: FeedVersion = FeedVersion::default();
86 assert_eq!(v, FeedVersion::Unknown);
87 }
88}