Rust中什么时候应该使用函数指针而非闭包?
我的理解是,实现一个接收impl Fn作为参数的函数可以让Rust编译器执行更多优化,且用impl Fn代替函数指针并不会带来额外限制——你完全可以直接将函数指针传递给接收impl Fn的函数。
基于这一点,我认为Rust中的函数指针类型仅在以下场景具备不可替代的作用:
- 作为
PhantomData的泛型参数,用于表达类型协变 - FFI交互场景
- 部分场景下作为
Box<dyn Fn(...) -> ...>的轻量化替代方案
内容的提问来源于stack exchange,提问作者Francesco Ruta
相关产品推荐
相关产品推荐

