初学Rust笔记

今天是学习rust的第三天,首先总结昨天的学习内容,温故才能知新~

学习材料:Rust官网教程《The Rust Programming Language》

学习内容概览

  1. Getting Started:hello world基础代码、Hello Cargo 初试cargo命令。
  2. Programming a Guessing Game:通过一个猜数字的小例子初识Rust中的基础语言。
  3. Common Programming Concepts:包括变量及其可变性、数据类型、函数、注释和控制流。
  4. Understanding Ownership:首先介绍了ownership的定义,随后讲解了reference和slice。 (本部分为主要笔记内容)
  5. Using Structs to Structure Related Data:本章内容为结构体。

Hello Cargo没有太大的难度,基本跟随书上的介绍一步一步做就可以。学习了cargo buildcargo runcargo test等命令,另外还介绍了依赖库的添加:在cargo.toml中的 [dependencies] 下添加依赖(此过程中如果遇到下载慢的情况可以参照上一篇笔记的解决方法);以及在依赖包的更新问题:cargo.lock中会记录各个依赖的版本,防止出现由于版本更新而导致的bug。

第2、3章为rust的基本变量及语言规则,具体内容见每章代码笔记。

第四章:Ownership
Ownership作为rust独特的、重要的一个特点,使得rust具有memory的安全性保证,可以有效地避免出现悬浮指针、悬浮变量的问题。rust在运行代码时,通过ownership来确定每个变量的有效范围,以及何时使用drop命令来释放该变量的空间。

Ownership rules:(三规则)

  • rust中的每个值都有自己的拥有者 (owner)
  • 每次只能有一个owner
  • 当owner超过其范围时(scope),值就会被drop

本章采用了较为复杂的 S t r i n g String String数据类型作为例子。考虑以下代码:

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

此句中,将s1的值赋给了s2,rust的处理方式是:将s1 out of scope,s1此时不再是valid的值,因而如果在之后调用s1,rust将会报错:

error: use of moved value:'s1'

一张图表示这个过程:

你可能感兴趣的:(Rust代码学习,rust,mac,os,x,intellij,idea)