Rust absolutely does have first-class functions, though. Their type is `fn(T)->U`. The "three different function types" that you refer to are traits for closures. And note that closures with no state (lambdas) coerce into function types.
higher_order(is_zero);
higher_order(|n| n == 0);
fn higher_order(f: fn(i32)->bool) {
f(42);
}
fn is_zero(n: i32) -> bool {
n == 0
}
It's true that when you have a closure with state then Rust forces you to reason about the ownership of that state, but that's par for the course in Rust.