lastfm_client/types/
period.rs1#[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#[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}