如何定义返回其自己类型的Rust函数类型?

bur*_*rfl 5 generics rust

我正在学习Rust,并且仍然非常想要了解它.考虑以下Go定义:

type FnType func(paramType) FnType
Run Code Online (Sandbox Code Playgroud)

它只是一个返回相同类型函数的函数.可以在Rust中实现类似的东西吗?而且,理想情况下,它可以一般地完成,因此paramType由客户指定吗?

bur*_*rfl 5

我做了一些挖掘文档,然后去了操场,我想我已经能够自己回答这个问题,虽然它确实需要一个中间类型: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)

您可以验证它是否在操场上运行.