aboutsummaryrefslogtreecommitdiff
path: root/proverb/src
diff options
context:
space:
mode:
Diffstat (limited to 'proverb/src')
-rw-r--r--proverb/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/proverb/src/lib.rs b/proverb/src/lib.rs
new file mode 100644
index 0000000..1046553
--- /dev/null
+++ b/proverb/src/lib.rs
@@ -0,0 +1,15 @@
1use std::iter;
2
3pub fn build_proverb(list: &[&str]) -> String {
4 if list.is_empty() {
5 String::new()
6 } else {
7 let reason = |(a, b)| format!("For want of a {} the {} was lost.\n", a, b);
8 let bitter_end = format!("And all for the want of a {}.", list[0]);
9 list.iter()
10 .zip(list.iter().skip(1)) // .window(2) also works here
11 .map(reason)
12 .chain(iter::once(bitter_end))
13 .collect()
14 }
15}