Rust 在闭包内独立借用结构的字段
两者之间有什么区别Rust 在闭包内独立借用结构的字段,rust,Rust,两者之间有什么区别 让book_分数=&system.book_分数; library.books.sort_-by_-key(|b | book_分数[*b]); 及 library.books.sort_-by_-key(|b |和system.book_分数[*b]); ? 第一个是编译器允许的,第二个是失败的 错误[E0502]:无法将系统作为不可变项借用,因为它也是作为可变项借用的 库是系统的一个字段,库是类似for循环的库的一个元素 与MUT系统>库{< /代码> < /P> >
让book_分数=&system.book_分数;
library.books.sort_-by_-key(|b | book_分数[*b]);
及
library.books.sort_-by_-key(|b |和system.book_分数[*b]);
?
第一个是编译器允许的,第二个是失败的
错误[E0502]:无法将系统作为不可变项借用,因为它也是作为可变项借用的
库
是系统
的一个字段,库
是类似for循环的库
的一个元素<库>与MUT系统>库{< /代码> < /P> > P >不同之处在于CULL的变量绑定是浅的。请考虑下面的闭包:
let closure=| | println!(“{}”,a.b.c.d);
由于闭包不定义a
,a
是从其外部环境借来的。实际调用时,闭包访问借来的a
上的.b.c.d
闭包不会立即计算并借用a.b.c.d
。如果它这样做了,它将无法注意到a.b
或a.b.c
的更改,甚至a.b.c.d
。同样,如果它在创建时捕获a.b.c
,并在调用时访问.d
,它将无法响应更改es至a.b
或a.b.c
如果需要预捕获表达式的一部分,则需要像第一个代码片段那样将其显式化。请发布其余代码,并提供一些结构定义。