From 4dfc11d74ab02ac5765ae5d08fb750c91f4744b4 Mon Sep 17 00:00:00 2001 From: Hunter Kvalevog Date: Fri, 2 Oct 2026 21:53:51 -0500 Subject: rustlings: move to rust/ --- rustlings/solutions/quizzes/quiz2.rs | 90 ------------------------------------ 1 file changed, 90 deletions(-) delete mode 100644 rustlings/solutions/quizzes/quiz2.rs (limited to 'rustlings/solutions/quizzes/quiz2.rs') diff --git a/rustlings/solutions/quizzes/quiz2.rs b/rustlings/solutions/quizzes/quiz2.rs deleted file mode 100644 index 8b073b1..0000000 --- a/rustlings/solutions/quizzes/quiz2.rs +++ /dev/null @@ -1,90 +0,0 @@ -// Let's build a little machine in the form of a function. As input, we're going -// to give a list of strings and commands. These commands determine what action -// is going to be applied to the string. It can either be: -// - Uppercase the string -// - Trim the string -// - Append "bar" to the string a specified amount of times -// -// The exact form of this will be: -// - The input is going to be a vector of 2-length tuples, -// the first element is the string, the second one is the command. -// - The output element is going to be a vector of strings. - -enum Command { - Uppercase, - Trim, - Append(usize), -} - -mod my_module { - use super::Command; - - // The solution with a loop. Check out `transformer_iter` for a version - // with iterators. - pub fn transformer(input: Vec<(String, Command)>) -> Vec { - let mut output = Vec::new(); - - for (string, command) in input { - // Create the new string. - let new_string = match command { - Command::Uppercase => string.to_uppercase(), - Command::Trim => string.trim().to_string(), - Command::Append(n) => string + &"bar".repeat(n), - }; - - // Push the new string to the output vector. - output.push(new_string); - } - - output - } - - // Equivalent to `transform` but uses an iterator instead of a loop for - // comparison. Don't worry, we will practice iterators later ;) - pub fn transformer_iter(input: Vec<(String, Command)>) -> Vec { - input - .into_iter() - .map(|(string, command)| match command { - Command::Uppercase => string.to_uppercase(), - Command::Trim => string.trim().to_string(), - Command::Append(n) => string + &"bar".repeat(n), - }) - .collect() - } -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - // Import `transformer`. - use super::my_module::transformer; - - use super::Command; - use super::my_module::transformer_iter; - - #[test] - fn it_works() { - for transformer in [transformer, transformer_iter] { - let input = vec![ - ("hello".to_string(), Command::Uppercase), - (" all roads lead to rome! ".to_string(), Command::Trim), - ("foo".to_string(), Command::Append(1)), - ("bar".to_string(), Command::Append(5)), - ]; - let output = transformer(input); - - assert_eq!( - output, - [ - "HELLO", - "all roads lead to rome!", - "foobar", - "barbarbarbarbarbar", - ] - ); - } - } -} -- cgit v1.2.3