w3resource

Rust String Transformation Function

Rust Closures and Higher-Order Functions: Exercise-6 with Solution

Write a Rust function that takes a closure and a vector of strings, applies the closure to each string, and returns a new vector of modified strings.

Sample Solution:

Rust Code:

fn apply_closure_to_strings<F>(strings: Vec<String>, closure: F) -> Vec<String>
where
    F: Fn(String) -> String, // Closure trait bound
{
    strings.into_iter() // Convert the input vector into an iterator
        .map(closure) // Apply the closure to each string and collect the results
        .collect() // Collect the modified strings into a new vector
}

fn main() {
    // Example usage:
    let strings = vec!["rust".to_string(), "exercises".to_string()];
    println!("Original strings: {:?}", strings);
    let modified_strings = apply_closure_to_strings(strings, |s| s.to_uppercase());
    println!("Modified strings: {:?}", modified_strings);  
}

Output:

Original strings: ["rust", "exercises"]
Modified strings: ["RUST", "EXERCISES"]

Explanation:

In the exercise above,

  • The "apply_closure_to_strings()" function takes two parameters:
    • strings: A vector of strings.
    • closure: A closure that takes a string and returns a modified string.
    • Inside the function, "into_iter()" is called on the input vector to convert it into an iterator.
    • The "map()" function is then used to apply the closure to each string in the iterator and collect the results.
    • Finally, the "collect()" function is used to collect the modified strings into a new vector, which is returned.

In the example provided in the "main()" function, the closure |s| s.to_uppercase() converts each string to uppercase. The function "apply_closure_to_strings()" is called with a vector of strings and the closure. The modified strings are printed.

Rust Code Editor:


Previous: Apply Closure Iteratively in Rust.
Next: Apply Closure to range in Rust.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.