badge_maker/badge/
links.rs

1#[derive(Debug, Clone, Eq, PartialEq)]
2pub struct Links {
3    pub(crate) left: Option<String>,
4    pub(crate) right: Option<String>,
5}
6
7impl Links {
8    pub fn is_single(&self) -> bool {
9        (self.left.is_some() && self.right.is_none()) || self.is_same_link()
10    }
11
12    fn is_same_link(&self) -> bool {
13        self.left.is_some() && self.left == self.right
14    }
15
16    pub fn single(&self) -> Option<&str> {
17        if self.is_single() {
18            Some(self.left.as_ref().unwrap())
19        } else {
20            None
21        }
22    }
23    pub fn any(&self) -> bool {
24        self.left.is_some() || self.right.is_some()
25    }
26
27    pub fn left(&self) -> &Option<String> {
28        &self.left
29    }
30    pub fn right(&self) -> &Option<String> {
31        &self.right
32    }
33}
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38
39    #[test]
40    fn links_equal_test() {
41        let l = Links {
42            left: Some("example".to_string()),
43            right: Some("example".to_string()),
44        };
45        assert!(l.is_single());
46    }
47}