Rust 中的引用与借用 (references and borrowing)
2019-08-08 14:08 rust
Rust 中, 引用, 简单而言就是指向一个值所在内存的指针, 这个跟 c++ 里是一致的. 引用本身不支持指针操作, 使用起来更安全.
let s = String::from("Hello");
let s1 = &s;
println!("s1: {}", s1);
以上代码, s1
就是指向 s
所在的内存地址, 大致的内存分布是这样的:
s1 s
+--------+ +--------+ +---+
| ptr | +------> |ptr | +------> | H |
+--------+ |length | | e |
|capacity| | l |
+--------+ | l |
| o |
+---+
另外, 如果一个引用作为函数的参数, 它又称为对一个值的借用.
fn capacity(s: &str) {
println!("len of s: {}", s.len());
}
let s1 = String::from("Hello");
capacity(&s1);
这里在调用 capacity()
函数时, 创建了一个指向s1
的临时的引用, 它就又被称为借用
(borrow). 该借用的作用域是整个函数体.