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