mirror of
https://github.com/rust-lang/rustlings.git
synced 2025-12-28 23:09:18 +00:00
64 lines
1.6 KiB
Rust
64 lines
1.6 KiB
Rust
// quiz2.rs
|
||
//
|
||
// 本測驗涵蓋以下章節:
|
||
// - 字串
|
||
// - 向量 (Vec)
|
||
// - 移動語義 (Move semantics)
|
||
// - 模組 (Modules)
|
||
// - 枚舉 (Enums)
|
||
//
|
||
// 讓我們建立一個函數形式的小機器。作為輸入,我們將提供一個字串和命令的列表。
|
||
// 這些命令決定了要對字串執行的操作。它可以是:
|
||
// - 將字串轉為大寫
|
||
// - 修剪字串
|
||
// - 將 "bar" 附加到字串指定的次數
|
||
// 具體形式如下:
|
||
// - 輸入是一個長度為2的元組向量,
|
||
// 第一個元素是字串,第二個是命令。
|
||
// - 輸出是一個字串向量。
|
||
//
|
||
// 這次沒有提示!
|
||
|
||
// I AM NOT DONE
|
||
|
||
pub enum Command {
|
||
Uppercase,
|
||
Trim,
|
||
Append(usize),
|
||
}
|
||
|
||
mod my_module {
|
||
use super::Command;
|
||
|
||
// TODO: 完成函數簽名!
|
||
pub fn transformer(input: ???) -> ??? {
|
||
// TODO: 完成輸出聲明!
|
||
let mut output: ??? = vec![];
|
||
for (string, command) in input.iter() {
|
||
// TODO: 完成函數體。你能做到的!
|
||
}
|
||
output
|
||
}
|
||
}
|
||
|
||
#[cfg(test)]
|
||
mod tests {
|
||
// TODO: 我們需要導入什麼來讓 `transformer` 在作用域內?
|
||
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");
|
||
}
|
||
}
|