lastfm_client/types/
period.rs

1/// Period options for Last.fm time range filters
2#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub enum Period {
4    Overall,
5    Week,
6    Month,
7    ThreeMonth,
8    SixMonth,
9    TwelveMonth,
10}
11
12impl Period {}
13
14/// Track limit options
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16pub enum TrackLimit {
17    Limited(u32),
18    Unlimited,
19}
20
21impl From<Option<u32>> for TrackLimit {
22    fn from(opt: Option<u32>) -> Self {
23        match opt {
24            Some(limit) => TrackLimit::Limited(limit),
25            None => TrackLimit::Unlimited,
26        }
27    }
28}
29
30impl From<u32> for TrackLimit {
31    fn from(limit: u32) -> Self {
32        TrackLimit::Limited(limit)
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use super::*;
39
40    #[test]
41    fn test_track_limit_from_option() {
42        let limited: TrackLimit = Some(100).into();
43        assert_eq!(limited, TrackLimit::Limited(100));
44
45        let unlimited: TrackLimit = None.into();
46        assert_eq!(unlimited, TrackLimit::Unlimited);
47    }
48
49    #[test]
50    fn test_track_limit_from_u32() {
51        let limited: TrackLimit = 50.into();
52        assert_eq!(limited, TrackLimit::Limited(50));
53    }
54}