2022年10月30日


2022年10月30日

变量绑定与解构

  1. 变量命名。没啥其他区别,不能命名成关键字
  2. 变量绑定。let a = “……..”,所有权
  3. 变量可变性。默认情况下是不可变的,可以用mut,let mut a = *,这个时候a就可以(明着)变;
  4. 忽略未使用变量。当你命名了一个变量,但是却不用,记得在前面加个_下划线
  5. 变量遮蔽。可以多次let x ,会把之前的覆盖掉。但要注意变量的类型。在当前的花括号作用域内,对之前的x进行遮蔽
  6. 常量。常量用const来声明,并且值的类型必须标注。如
    const MAX_POINTS: u32 = 100_000;

基本类型

1.数值类型。
数据类型
运算符 说明
*& 位与 相同位置均为1时则为1,否则为0
*| 位或 相同位置只要有1时则为1,否则为0
*^ 异或 相同位置不相同则为1,相同则为0
*! 位非 把位中的0和1相互取反,即0置为1,1置为0
*<< 左移 所有位向左移动指定位数,右位补零
*>> 右移 所有位向右移动指定位数,左位补零
2.字符、布尔、单元类型。颜文字也是字符,字符只能用 ‘’ 来表示, “” 是留给字符串的
布尔(true false)
单元类型。()这就是单元类型,常见的 println!() 的返回值也是单元类型 ()。
3.语句和表达式
Rust 的函数体是由一系列语句组成,最后由一个表达式来返回值,这种基于语句(statement)和表达式(expression)的方式是非常重要的,要能明确的区分这两个概念
语句:let a = 8;
表达式会进行求值,然后返回一个值,表达式不能包含分号。表达式如果不返回任何值,会隐式地返回一个 ()
4.函数。
函数名和变量名使用蛇形命名法(snake case),例如 fn add_two() -> {}
函数的位置可以随便放,Rust 不关心我们在哪里定义了函数,只要有定义即可
每个函数参数都需要标注类型
因此我们可以把函数的返回值直接赋给调用者。

*函数返回:函数的返回值就是函数体最后一条表达式的返回值,当然我们也可以使用 return 提前返回,

所有权和借用

rust通过所有权来管理内存,编译器在编译时会根据一系列规则进行检查
这种检查只发生在编译期,因此对于程序运行期,不会有任何性能上的损失。

  • 1.Rust 中每一个值都被一个变量所拥有,该变量被称为值的所有者
  • 2.一个值同时只能被一个变量所拥有,或者说一个值只能拥有一个所有者
  • 3.当所有者(变量)离开作用域范围时,这个值将被丢弃(drop)

:: 是一种调用操作符

Rust通过借用(Borrowing) 来获取变量的引用,称之为借用(borrowing)。
& 符号即是引用,它们允许你使用值,但是不获取所有权
加个mut,变成&mut就是可变引用。可变引用同时只能存在一个

复合类型

字符串和切片、元组、结构体、枚举、数组

结构体 struct
一个结构体由几部分组成:
1、通过关键字 struct 定义
2、一个清晰明确的结构体 名称
3、几个有名字的结构体 字段
struct User {
active: bool,
username: String,
email: String,
sign_in_count: u64,
}

枚举(enum 或 enumeration)允许你通过列举可能的成员来定义一个枚举类型

在 Rust 中,最常用的数组有两种,第一种是速度很快但是长度固定的 array,第二种是可动态增长的但是有性能损耗的 Vector,在本书中,我们称 array 为数组,Vector 为动态数组。

流程控制

if….else elseif for、while 和 loop
使用 continue 可以跳过当前当次的循环
使用 break 可以直接跳出当前整个循环


文章作者: Alicemana
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alicemana !
  目录