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


如果需要预捕获表达式的一部分,则需要像第一个代码片段那样将其显式化。

请发布其余代码,并提供一些结构定义。