认识的过程是反复的,认识事物并不是一次就能完成的,而是要经过多次、反复认识才能彻底完成对事物本质的认识(马哲)。这个观点具有启发性。随着互联网的繁荣发展,知识变得更加易得,哪怕是一次小小的检索,都可以新的认识。每一次检索都充满了无限的可能性,我准备逐步记录我在互联网的学习历程。
对于 Rust 而言,闭包是什么?过去我一直认为闭包只是一个回调函数,类似于 C 中的函数指针。但是,对 C 库封装了一段时间,我发现 Rust 闭包和函数还有所区别,最大的区别体现在闭包可以捕获作用域变量,而函数不行(函数可以捕获静态全局变量)。这段顺缘让我有机会进一步认识 Rust 闭包。
在 Rust 中,闭包更等价于一个匿名结构体,通过该匿名结构体,捕获作用域中变量,共有三种模式:拿走所有权(FnOnce)、可变借用(FnMut)和不可变借用(Fn)。使用 move 关键字可以让闭包捕获作用域变量的所有权(因为 FnMut 和 Fn 都实现了 FnOnce)。
此处链接到知乎专栏,感兴趣的朋友前往查看:https://zhuanlan.zhihu.com/p/64417628。