Cargo 换源
第一种: 编辑 .cargo/config.toml
[source.crates-io]replace-with = "ustc"[source.ustc]registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"[net]git-fetch-with-cli = true
第二种:
export RUSTUP_DIST_SERVER="https://rsproxy.cn"export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"## ~/.cargo/config[source.crates-io]replace-with = 'rsproxy-sparse'[source.rsproxy]registry = "https://rsproxy.cn/crates.io-index"[source.rsproxy-sparse]registry = "sparse+https://rsproxy.cn/index/"[registries.rsproxy]index = "https://rsproxy.cn/crates.io-index"[net]git-fetch-with-cli = true
打包
cargo install crosscross build --release --target x86_64-pc-windows-gnucross build --release --target x86_64-apple-darwincross build --release --target x86_64-unknown-linux-gnu
配置
应对panic 错误处理

[profile.release]panic = "abort"
获得产生panic的回溯信息:
添加环境变量:
RUST_BACKTRACE=1
| RUST_BACKTRACE=full
类型部分



Tuple例子:

访问Tuple:


遍历数组
let a = [10, 20, 30, 40, 50]for element in a.iter() { println!("value: {}", element)}
所有权 Stack、Heap
在一个作用域内变量用完rust会自动drop(删除),将内存自动交还给操作系统。
只有在Heap上才区分深拷贝和浅拷贝。
move:转移所有权(Rust设计原则),旧的不能再使用
copy:将Stack,包括Heap里面的数据Copy一份(自然旧的还可以用)
Stack的数据


函数与所有权
函数传参时会取得参数的所有权,在函数返回时失效

如何让函数使用某个值,不获得所有权:
麻烦的做法:
let (s2, len) = get_length(s1)fn get_length(s: String) -> (String, unsize) { let length = s.len(); (s, length) //返回元组}
引用与借用
&变量 &mut 变量
Struct 结构体

Tuple struct

打印 Struct


Struct 定义方法

Struct 关联函数


枚举
枚举也可以定义方法,和struct定义方法一样


Rust中 “Null” 的概念



Match

匹配Option时,必须写完Some、None,
如果不想每个都匹配,可以使用_通配符,如:
let a = 3u8;match a { 1 => println!("111"), 2 => println!("222"), _ => println!("???")}
常用的集合
Vector
let v: Vec = Vec::new();let v = vec![1, 2, 3];
String
拼接字符串:
format()
? 运算符

泛型
方法中的泛型
