摘要: 示例程序: fn main() { let x = 123; let y = x; println!("x = {}, y = {}", x, y); // 输出 x = 123, y = 123 } 上述程序中,在创建变量 y 之后,变量 x 继续有效。(而不会想 String 的赋值一样发生移动 阅读全文
posted @ 2022-01-24 18:10 鱼又悲 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 变量的克隆clone能够拷贝堆内存中的数据。 当确实需要深度拷贝String堆上的数据,而不仅仅时栈数据时,就可以使用clone方法。 例如,下面的程序会将 s1 的内容克隆给 s2(包括栈内存和堆内存上的数据): fn main() { let s1 = String::from("yuyoube 阅读全文
posted @ 2022-01-24 17:59 鱼又悲 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 示例程序: fn main() { let s1 = String::from("yuyoubei"); let s2 = s1; println!("s1 = {}", s1); } 运行这段程序会报错,报错信息如下: error[E0382]: borrow of moved value: `s 阅读全文
posted @ 2022-01-24 17:55 鱼又悲 阅读(277) 评论(0) 推荐(0) 编辑
摘要: Rust中的资源获取即初始化(Resource Acquisition Is Initialization, RAII): 内存会自动地在拥有它的变量离开作用域后(即生命周期结束时)进行释放。 Rust会在作用域结束的地方(即 } 处)自动调用 drop 函数。 示例程序: { let mut s 阅读全文
posted @ 2022-01-24 14:40 鱼又悲 阅读(103) 评论(0) 推荐(0) 编辑
摘要: String类型会在堆内存上分配自己需要的存储空间,所以它能够处理在编译时位置大小的文本。 示例: 创建一个空字符串: let s = String::new(); 调用String的from函数根据字符串字面量来创建一个String实例: let s = String::from("yuyoube 阅读全文
posted @ 2022-01-24 12:14 鱼又悲 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 变量的作用域:一个对象在程序中有效的范围。 变量从声明的位置开始直到当前作用域结束都是有效的。 下面程序及其注释对变量的有效范围给了具体说明: { // 由于变量s还未被声明,所以它在这里是不可用的 let s = "yuyoubei"; // 从这里开始变量s变得可用 // 执行与s相关的操作 } 阅读全文
posted @ 2022-01-24 12:06 鱼又悲 阅读(117) 评论(0) 推荐(0) 编辑
摘要: Rust中的每一个值都有一个对应的变量作为它的 所有者。 在同一时间内,值有且仅有一个所有者。 当所有者离开自己的作用域时,它持有的值就会被释放掉。 阅读全文
posted @ 2022-01-24 12:01 鱼又悲 阅读(35) 评论(0) 推荐(0) 编辑