Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,709 questions

55,473 answers

573 users

How to use higher-order functions in Rust

2 Answers

0 votes
// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// Higher-order function: takes a function as an argument
fn apply_twice<F>(fnc: F, x: i32) -> i32
where
    F: Fn(i32) -> i32,
{
    fnc(fnc(x))
}

// A simple function to pass in
fn add3(n: i32) -> i32 {
    n + 3
}

fn main() {
    // Use the higher-order function
    let result = apply_twice(add3, 5); // 5 + 3 = 8 + 3 = 11

    println!("{}", result);
}


/*
run:

11

*/

 



answered Jun 4 by avibootz
0 votes
// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// makeMultiplier is a higher‑order function because it RETURNS another function
fn make_multiplier(n: i32) -> impl Fn(i32) -> i32 {

    // This inner function forms a closure and remembers the value of n
    move |x| x * n // Uses the captured value n
}

fn main() {
    // double_val is now a function created by makeMultiplier(2)
    // It remembers n = 2 through closure
    let double_val = make_multiplier(2);

    // Calling double_val(10) multiplies 10 by the captured n (which is 2)
    println!("{}", double_val(10));
}


/*
run:

20

*/

 



answered Jun 4 by avibootz
...