#[derive(Clone)] pub struct Session { data: Vec, error: Option, } impl Session { pub fn new() -> Self { Self { data: Vec::new(), error: None, } } pub fn push(&mut self, id: String) { self.data.push(id); } pub fn append(&mut self, mut data: Vec) { self.data.append(&mut data); } pub fn get_data(&self) -> Vec { self.data.clone() } } #[cfg(test)] mod setup { use super::*; #[test] fn add_item() { let mut sess = Session::new(); let id = "frog".to_string(); sess.push(id.clone()); assert!(sess.data.contains(&id), "{} not in {:?}", id, sess.data); } #[test] fn add_list() { let mut sess = Session::new(); let mut data: Vec = Vec::new(); data.push("fred".to_string()); data.push("barney".to_string()); sess.append(data.clone()); assert_eq!(sess.data, data); } } #[cfg(test)] mod data { use super::*; #[test] fn show_data() { let data = ["pne".to_string(), "two".to_string(), "three".to_string()]; let mut sess = Session::new(); sess.append(data.to_vec()); assert_eq!(sess.get_data(), data); } }