Apply Closure to range in Rust
Write a Rust program that creates a higher-order function that takes a closure and a range of numbers, and applies the closure to each number in the range, returning a new vector of results.
Sample Solution:
Rust Code:
fn apply_closure_to_range<F>(range: std::ops::Range<i32>, closure: F) -> Vec<i32>
where
F: Fn(i32) -> i32, // Closure trait bound
{
range.into_iter() // Convert the input range into an iterator
.map(closure) // Apply the closure to each number in the range and collect the results
.collect() // Collect the modified numbers into a new vector
}
fn main() {
// Example usage:
let range = 1..6; // Range from 1 to 5 (inclusive)
let modified_numbers = apply_closure_to_range(range, |x| x * 3);
println!("Modified numbers: {:?}", modified_numbers);
}
Output:
Modified numbers: [3, 6, 9, 12, 15]
Explanation:
The above code defines a function "apply_closure_to_range()" that takes a range of integers (std::ops::Range<i32>) and a closure as arguments. The closure takes an integer and returns another integer. The function applies the closure to each element in the range, transforming them, and returns a new vector containing the transformed elements.
In the "main()" function, an example usage of "apply_closure_to_range()" is demonstrated. It creates a range from 1 to 5 (inclusive), and then applies a closure that multiplies each number by 3. Finally, it prints the modified numbers.
Rust Code Editor:
Previous: Rust String Transformation Function.
Next: Sum with Closure 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