take_some/
vec.rs

1use TakeSome;
2
3impl<T> TakeSome for Vec<T> {
4    type Item = T;
5
6    /// Pops up the last element of the vector.
7    fn take_some(&mut self) -> Option<T> {
8        self.pop()
9    }
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn check_vec() {
18        let mut empty: Vec<String> = Vec::new();
19        assert_eq!(None, empty.take_some());
20
21        let mut one_element: Vec<_> = vec!["check".to_string()];
22        assert_eq!(Some("check".into()), one_element.take_some());
23        assert!(one_element.is_empty());
24
25        let mut vec: Vec<_> = vec!["check".to_string(), "lol".into(), "wut".into()];
26        assert!(vec.take_some().is_some());
27        assert_eq!(2, vec.len());
28    }
29}