小编Dir*_*tor的帖子

为什么 Rust NLL 不适用于同一语句中的多个借用?

首先,我尝试了这样的事情:

let mut vec = vec![0];
vec.rotate_right(vec.len());
Run Code Online (Sandbox Code Playgroud)

无法编译,因为:

错误[E0502]:无法借用“vec”作为不可变的,因为它也被借用为可变的

我认为 Rust 借用检查器可能比这更聪明,所以我找到了一个叫做NLL的东西,它应该可以解决这个问题。

我尝试了示例:

let mut vec = vec![0];
vec.resize(vec.len(), 0);
Run Code Online (Sandbox Code Playgroud)

它可以工作,但为什么它不能与 一起工作rotate_right?他们俩都采取了&mut self. 这是怎么回事?

rust borrow-checker

34
推荐指数
2
解决办法
1427
查看次数

为什么 Linux 系统调用在不同架构下会有所不同

根据这个系统调用表,Linux系统调用在不同的体系结构中是不同的,但IMO系统调用是更高级别的封装,不依赖于任何特定的体系结构。为什么要这样设计呢?

在特定情况下,riscv64 linux 没有mkdir,而是有mkdirat,但奇怪的是它没有rmdir或,没有rmdirat,它怎么能实现,即使它可以(通过其他系统调用,如和),为什么不为 做同样的事情呢?这两个系统调用不匹配确实令人困惑。/bin/rmdirrmdirreadwritemkdir

linux system-calls linux-kernel riscv

3
推荐指数
1
解决办法
331
查看次数

标签 统计

borrow-checker ×1

linux ×1

linux-kernel ×1

riscv ×1

rust ×1

system-calls ×1