在学习Rust时,我正在尝试实现一个简单,干净的FSM,与我在Go中多次使用的this example非常相似:
package main
import (
"fmt"
)
type StateFn func(interface{}) StateFn
func First(interface{}) StateFn {
fmt.Println("First")
return Second
}
func Second(interface{}) StateFn {
fmt.Println("Second")
return nil
}
func main() {
for state := First(nil); state != nil; state = state(nil) {}
}
我希望有类似干净和富有表现力的东西,理想情况下是通用的,这样我就不必在func参数中使用Rust等效的interface{}
。
此问题是How can I define a Rust function type which returns its own type?的扩展名。