rust 学习(二)
引用与借用Rust官网中文https://kaisery.github.io/trpl-zh-cn/ch04-02-references-and-borrowing.html 引入上一篇博客讲到,我们需要一个机制,让我们在没有拿到所有权就可以使用变量。这里引入一个“新”(其他语言也有)的概念,引用。它像是一个指针(是一个地址),可以由此访问存储于该地址的数据,与指针不同,引用确保指向某个特定类型的有效值。 引用例如下述代码 1234567891011fn main() { let s1 = String::from("hello"); let len = calculate_length(&s1); println!("The length of '{s1}' is {len}.");}fn calculate_length(s: &String) -> usize { ...
rust学习(一)
所有权Rust官网中文https://kaisery.github.io/trpl-zh-cn/ch04-01-what-is-ownership.html 介绍Rust 使用所有权机制来管理内存,实际上是一组规则。这会与其他语言不同,一些语言使用垃圾回收机制来管理内存,如 Java 以及运行在 JVM 下的其他语言;还有一些需要手动释放内存,例如 C++等。与这些语言都不同,Rust 使用自己新的一套机制(所有权)来管理内存,编译时,会检查是否通过这些规则,而运行时并不会影响运行效率。 所有权规则 Rust 中的每一个值都有一个 所有者(owner)。 值在任一时刻有且只有一个所有者。 当所有者(变量)离开作用域,这个值将被丢弃。 变量的作用域根据所有权的规则,当一个值离开作用域就无效。例如,使用官网里的例子 12345678let s = "hello1";{ // s 在这里无效,它尚未声明 let s = "hello2"; // 从此处起,s 是有效的 //...