首先,我尝试了这样的事情:
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. 这是怎么回事?
根据这个系统调用表,Linux系统调用在不同的体系结构中是不同的,但IMO系统调用是更高级别的封装,不依赖于任何特定的体系结构。为什么要这样设计呢?
在特定情况下,riscv64 linux 没有mkdir,而是有mkdirat,但奇怪的是它没有rmdir或,没有rmdirat,它怎么能实现,即使它可以(通过其他系统调用,如和),为什么不为 做同样的事情呢?这两个系统调用不匹配确实令人困惑。/bin/rmdirrmdirreadwritemkdir