Rust String Transformation Function
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.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics