小编Jai*_*lla的帖子

尝试理解 Rust 中的可变闭包

我是一个 Rustacean 新手(完成了 rustaling 课程,到目前为止还很享受)。我在 Rust 书中的一些闭包示例中遇到了麻烦。特别是这个:

fn main() {     

    let mut list = vec![1, 2, 3];     

    let mut borrows_mutably = || list.push(7);      

    borrows_mutably();     
} 
Run Code Online (Sandbox Code Playgroud)

我们需要声明关闭这一事实mut对我来说很难理解。它确实是必要的,因为如果你不将它声明为 mut,编译器会抱怨:

calling `borrows_mutably` requires mutable binding due to mutable borrow of `list`
   |         |
   |         help: consider changing this to be mutable: `mut borrows_mutably`
   |
   |     borrows_mutably();
   |     ^^^^ cannot borrow as mutable
Run Code Online (Sandbox Code Playgroud)

我在这里和那里读过很多帖子,我的理解是闭包需要被定义为mut因为它正在改变它的环境。不知道这个直觉对不对……

不管怎样,在玩另一个闭包时,我发现了一个打破我理解的例子。这个:

calling `borrows_mutably` requires mutable binding due to mutable borrow of `list`
   |         |
   |         help: …
Run Code Online (Sandbox Code Playgroud)

closures rust

10
推荐指数
1
解决办法
356
查看次数

标签 统计

closures ×1

rust ×1