- FnOnce实现的方式是调用的时候将所有权转移给了call_once
extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
- FnMut继承了FnOnce,但是调用实现是将引用传给了call_mut
extern "rust-call" fn call_mut(&mut self, args: Args) -> Self::Output;
- Fn继承了FnMut,再新增了一个可多次调用的call
extern "rust-call" fn call(&self, args: Args) -> Self::Output;
- 需注意的是这个继承关系下,Fn FnMut也是可以作为FnOnce使用的,也就是说如果将这两种闭包传给FnOnce参数使用也会导致所有权转移。