diff options
| author | mo8it <mo8it@proton.me> | 2024-04-22 01:07:36 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-04-22 01:07:36 +0200 |
| commit | ad8e5444837b5c2b06497b9b592fbbb8c2db057e (patch) | |
| tree | 16e96fdbcd5cbf89c77ee091ed149463cbf62306 /exercises/quizzes/quiz2.rs | |
| parent | 86684b7fc9dd5e8bedad6056565645d1d980925c (diff) | |
Move quizzes
Diffstat (limited to 'exercises/quizzes/quiz2.rs')
| -rw-r--r-- | exercises/quizzes/quiz2.rs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/exercises/quizzes/quiz2.rs b/exercises/quizzes/quiz2.rs new file mode 100644 index 0000000..0a29e78 --- /dev/null +++ b/exercises/quizzes/quiz2.rs @@ -0,0 +1,62 @@ +// This is a quiz for the following sections: +// - Strings +// - Vecs +// - Move semantics +// - Modules +// - Enums +// +// 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 a 2-length tuple, +// the first element is the string, the second one is the command. +// - The output element is going to be a Vector of strings. + +pub enum Command { + Uppercase, + Trim, + Append(usize), +} + +mod my_module { + use super::Command; + + // TODO: Complete the function signature! + pub fn transformer(input: ???) -> ??? { + // TODO: Complete the output declaration! + let mut output: ??? = vec![]; + for (string, command) in input.iter() { + // TODO: Complete the function body. You can do it! + } + output + } +} + +fn main() { + // You can optionally experiment here. +} + +#[cfg(test)] +mod tests { + // TODO: What do we need to import to have `transformer` in scope? + use ???; + use super::Command; + + #[test] + fn it_works() { + let output = transformer(vec![ + ("hello".into(), Command::Uppercase), + (" all roads lead to rome! ".into(), Command::Trim), + ("foo".into(), Command::Append(1)), + ("bar".into(), Command::Append(5)), + ]); + assert_eq!(output[0], "HELLO"); + assert_eq!(output[1], "all roads lead to rome!"); + assert_eq!(output[2], "foobar"); + assert_eq!(output[3], "barbarbarbarbarbar"); + } +} |
