diff --git a/contents/advance/functional-programing/closure.md b/contents/advance/functional-programing/closure.md index 51da26cb..797dcbc4 100644 --- a/contents/advance/functional-programing/closure.md +++ b/contents/advance/functional-programing/closure.md @@ -624,7 +624,7 @@ pub trait FnOnce { } ``` -看到没?从特征约束能看出来 `Fn` 的前提是实现 `FnMut`,`FnMut` 的前提是实现 `FnOne`,因此要实现 `Fn` 就要同时实现 `FnMut` 和 `FnOnce`,这段源码从侧面印证了之前规则的正确性。 +看到没?从特征约束能看出来 `Fn` 的前提是实现 `FnMut`,`FnMut` 的前提是实现 `FnOnce`,因此要实现 `Fn` 就要同时实现 `FnMut` 和 `FnOnce`,这段源码从侧面印证了之前规则的正确性。 从源码中还能看出一点:`Fn` 获取 `&self`,`FnMut` 获取 `&mut self`,而 `FnOnce` 获取 `self`。 在实际项目中,**建议先使用 `Fn` 特征**,然后编译器会告诉你正误以及该如何选择。