Mic*_*ell 1 rust borrow-checker
我尝试使用迭代器进行“正确的”Rust 版本的冒泡排序。明显的代码包含以下几行:
let mut vi = v.windows(2);
for mut i in vi {
if i[0] > i[1] {
i.swap(0, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
let mut vi = v.windows(2);
for mut i in vi {
if i[0] > i[1] {
i.swap(0, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从迭代器获取对向量元素对的可变引用?
根据文档,没有slice::windows_mut,这是您想要可变地访问值的。但是,它继续建议Cell::as_slice_of_cells解决您的具体问题:
use std::cell::Cell;
let vi = Cell::as_slice_of_cells(Cell::from_mut(&mut v)).windows(2);
for i in vi {
if i[0] > i[1] {
i[0].swap(&i[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |