我正在学习Rust,并且仍然非常想要了解它.考虑以下Go定义:
type FnType func(paramType) FnType
Run Code Online (Sandbox Code Playgroud)
它只是一个返回相同类型函数的函数.可以在Rust中实现类似的东西吗?而且,理想情况下,它可以一般地完成,因此paramType由客户指定吗?
我做了一些挖掘文档,然后去了操场,我想我已经能够自己回答这个问题,虽然它确实需要一个中间类型:a enum,具体而言.
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
}
Run Code Online (Sandbox Code Playgroud)
您可以验证它是否在操场上运行.