Rust基础

Rust圣经网址Git Repo

安装

# windows下安装rust,去https://www.rust-lang.org/zh-CN/tools/install 下载安装包

# linux下安装rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

基础知识

一些点

  1. Rust 中每一个值都被一个变量所拥有,该变量被称为值的所有者
  2. 一个值同时只能被一个变量所拥有,或者说一个值只能拥有一个所有者
  3. 当所有者(变量)离开作用域范围时,这个值将被丢弃(drop)
  4. Rust也允许变量Shadowing,也就是通过重复声明遮蔽之前声明的变量。和C++不同的时候,rust允许在同一个作用域进行遮蔽。
  5. String是可以动态伸缩的字符串类型,存储在堆上。
  6. 基本类型(存储在栈上)赋值语句Rust会自动拷贝,但是存储在堆上的数据不能自动拷贝,会进行变量绑定(相当于cpp的std::move),之前的变量就指向了无效的值。
  7. Rust永远也不会自动创建数据的深拷贝,浅拷贝只会发生在栈上
  8.  同一作用域,特定数据只能有一个可变引用,意思是如果有一个可变引用的话,连不可变引用也不能有,如果没有可变引用的话,可以有多个不可变引用。
  9. 字符串的切片是通过字节的形式来的,而字符串又是UTF-8编码(每个字符1-4个动态字节)。
  10. 字符串的insert是按字节的算index的,如果插入的位置是在字符的中间byte比如 “我正在测试”.insert(2, ‘哈’),UTF-8中文是3字节,正好插到中间,会报错。“我正在测试”.insert(3, ‘哈’)就没问题。