Rust 的代数效应
yield )其执行,并将控制权传递给其调用者,后者随后继续执行该函数。在这两种转换中,都可以传递数据,而且这些数据的类型与 Rust 中的类型一样。从有效函数传出的数据指定了一项操作。它被传递给有效处理程序,该处理程序执行该操作并将结果传递回有效函数。然后,有效函数的执行继续。这就像调用函数一样,但颠倒了。事实证明, 反向调用函数有一些非常棒的优点。由于效果由调用者处理,而不是被调用者处理,因此不存在是否以异步、可选、可失败或其他方式处理的限制。此外,不同的调用者可以在同一个具有效果的函数上使用不同的处理程序,这意味着一个具有 I/O 的效果函数既可以从普通的 fn 调用,也可以从 async fn 调用,在两者中都以"自然"的方式执行 I/O。不再需要区分 popular_crate 和 popular_crate::blocking 了!* effing-mad 并不保证会变得流行。请自行承担风险使用。
整个混乱的情况可以在 examples/ 目录中看到。除非你真的很聪明或很勇敢,否则请先查看“基本”示例。
暂无开放 Issues,或尚未同步最近议题。