跳转至

所有权


基础


所有权

可变, 可增长

需要在堆上分配一块在编译时未知大小的内存来存放内容

必须在运行时向内存分配器请求内存。

离开作用域后就被自动释放

建议使用场景: 结构体

let s1 = String::from("hello");
let s2 = s1;

// 这时s1将无效
// s1与s2只是在栈上的 指针 长度 容量 数据是两份 但指向的是相同堆, Rust为了防止s1被回收而影响s2或造成重复回收而污染内存 所以s2被定义后s1将无效


字面量

编译时就知道其内容, 快速且高效, 不可变性

包含: &str 整型 浮点型 Bool char 数组元组 等

建议场景: 函数参数

// 会真正拷贝数据
let a:i32 =1;
let b:i32 = a;

引用

解引用

解引用运算符(*)获取 i 中的值

let mut v = vec![100, 32, 57];
for i in &mut v {
    *i += 50;
}