rust - 如何在不获取所有权的情况下为 Rust 切片命名?
问题描述
在加密问题的上下文中,为了减少冗长,我“命名”了v
as的block
一部分,对其进行了一些处理,然后尝试验证整个ofdo_stuff
的结果:v
fn x() {
let mut v = vec![0; 32];
let block = &mut v[0..16];
do_stuff(block);
check_stuff(&v);
do_stuff(block);
}
fn do_stuff(_: &mut [i32]) {}
fn check_stuff(_: &[i32]) {}
借阅检查员抱怨:
error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
--> src/lib.rs:6:17
|
3 | let block = &mut v[0..16];
| - mutable borrow occurs here
...
6 | check_stuff(&v);
| ^^ immutable borrow occurs here
7 | do_stuff(block);
| ----- mutable borrow later used here
我知道这是试图提供的那种保证。但是,假设我知道自己在做什么,是否有一种惯用的方式来给切片命名,而不必do_stuff(&mut v[0..16])
每次都使用或复制?
解决方案
推荐阅读
- postgresql - 每当 RDS 中的表或架构发生更改时,在松弛通道中生成通知
- python - 如何仅从值中获取密钥?
- javascript - 合并应用程序脚本中的重复行
- c# - 如何将 2 个页面连接(绑定)到我的 MainWindow WPF
- php - 如何用逗号计数爆炸内爆数据?
- python - 将 Tkinter 与 SQLite 一起使用时收到错误消息,“可能不受支持的类型”。
- java - 如何以编程方式更改 appbar 布局以将工具栏置于底部 android?
- flutter - 如何正确加密密钥?_ 颤动
- r - R aborted when using ggsave with cairo_pdf
- azure-cognitive-search - Indexing html - token lenghts and highlights