I'm learning Rust, and still very much trying to get my head around it. Consider the following Go definition:
type FnType func(paramType) FnType
It's just a function that returns a function of the same type. Can something similar be implemented in Rust? And, ideally, can it be done generically, so that paramType
is specified by the client?
I did some digging in the docs and took to the playground and I think I've been able to answer this myself, although it does require an intermediary type: an enum
, to be specific.
fn main() {
let mut state = State::Some(first);
while let State::Some(s) = state {
state = s(0)
}
}
enum State<T> {
Some(fn(T) -> State<T>),
None,
}
fn first(_: i32) -> State<i32> {
println!("First");
State::Some(second)
}
fn second(_: i32) -> State<i32> {
println!("Second");
State::None
}
You can verify that it runs on the playground.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With