reverse_words/
reverse_words.rs

1use join_string::Join;
2
3pub fn reverse_words(s: impl AsRef<str>) -> String {
4    s.as_ref()
5        .split_whitespace()
6        .map(|s| s.chars().rev().join(""))
7        .join(" ")
8        .into_string()
9}
10
11fn main() {
12    println!("{}", reverse_words("foo bar baz"));
13
14    println!(
15        "{}",
16        "foo bar baz"
17            .split_whitespace()
18            .map(|s| s.chars().rev().join(""))
19            .join(" ")
20    );
21
22    println!(
23        "{}",
24        "foo bar baz"
25            .split_whitespace()
26            .map(|s| s
27                .chars()
28                .rev()
29                .map(|c| char::from_u32(c as u32 + 1).unwrap_or('?'))
30                .join(""))
31            .join(" ")
32    );
33
34    // inefficient temporary strings
35    println!(
36        "{}",
37        "foo bar baz"
38            .split_whitespace()
39            .map(|s| s.chars().rev().map(|c| format!("<{c}>")).join(""))
40            .join(" ")
41    );
42
43    // inefficient temporary strings
44    println!(
45        "{}",
46        std::env::args()
47            .map(|s| s.chars().rev().collect::<String>())
48            .join(" ")
49            .into_string()
50    );
51}