2023-02-14
1111
#rust
Matteo Di Pirro
158647
107
Feb 14, 2023 ⋅ 3 min read

How to define higher-order functions in Rust

Matteo Di Pirro I am an enthusiastic young software engineer who specialized in the theory of programming languages and type safety. I enjoy learning and experimenting with new technologies and languages, looking for effective ways to employ them.

Recent posts:

DesignCoder and the future of AI-generated UI

From sketches to code in minutes, DesignCoder shows how AI-generated, hierarchy-aware UIs could change the way developers prototype and ship apps.

Rosario De Chiara
Oct 7, 2025 ⋅ 5 min read

Would You Use If() functions in CSS?

It’s 2025, and CSS finally thinks logically. The if() function brings real conditional styling — no hacks, no JS workarounds. Here’s how to use it right.

Ikeh Akinyemi
Oct 7, 2025 ⋅ 16 min read
Typescript or Zod for Validation?

TypeScript vs Zod: Clearing up validation confusion

Learn when to use TypeScript, Zod, or both for data validation. Avoid redundant checks and build safer, type-sound applications.

Alexander Godwin
Oct 6, 2025 ⋅ 3 min read
Wasm 3 Before GTA 6 LogRocket Article

We got Wasm 3.0 before GTA 6: Meet the web’s new engine

Discover how WebAssembly 3.0’s garbage collector, exception handling, and Memory64 transform Wasm into a true mainstream web platform.

Ikeh Akinyemi
Oct 3, 2025 ⋅ 2 min read
View all posts

2 Replies to "How to define higher-order functions in Rust"

    1. Hello Giles. A method in Rust is just a function, which also takes a first `self` parameter (similarly to Python). Hence, passing a method is just a matter of using the right types in the function signatures:

      pub struct Greeter {
      greeting: String
      }

      impl Greeter {
      fn greet(&self, name: String) -> String {
      return format!(“{}, {}”, self.greeting, name);
      }
      }

      fn call(name: String, fun: fn(&Greeter, String) -> String) -> String {
      let greeter = Greeter { greeting: “Hello”.to_string() };
      return fun(&greeter, name);
      }

      fn main() {
      println!(“{}”, call(“Giles”.to_string(), Greeter::greet));
      }

Leave a Reply