#[derive(Debug, Eq, PartialEq)] pub struct Variable { pub(crate) id: String, pub(crate) initial_value: String, } impl From for Variable { fn from(string: String) -> Variable { let id_value: Vec<&str> = string.split('\n').collect(); let id = id_value[0].replace("VAR ", "").to_string(); let initial_value = id_value[1].to_string(); Variable { id, initial_value } } } impl ToString for Variable { #[inline] fn to_string(&self) -> String { format!("VAR {}\n{}", self.id, self.initial_value) } } #[test] fn test_variable_from_string() { assert_eq!( Variable::from("VAR a\n42".to_string()), Variable { id: "a".to_string(), initial_value: "42".to_string()} ); } #[test] fn test_variable_to_string() { let output = Variable { id: "c".to_string(), initial_value: "57".to_string() }.to_string(); let expected = "VAR c\n57".to_string(); assert_eq!(output, expected); }