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