类型系统
rust中的表达式是什么{}包围的部分,函数,impl,match里面,if else表达式,通过这些功能分割系统
- let语句的作用,创建新变量并且绑定资源
- 终止loop默认返回()
- rust是区分有符合和无符号类型的,和go类似
- rust支持类型推断
- rust支持类型别名 type xxx =xxx;
两种字符串 string和str
String:包含所有权的字符串
代码语言:txt复制* 支持字符串切片
- str只能创建引用类型。&str借用字符串
- 'static 整个生命周期
- &str不可变
- 函数中使用字符串将切片传入
&str和string的场景
- 尽可能使用&str
- &str使用中零成本
全局变量
- 常量 const, &'static
- 静态值 static
- 编译期函数 const fn 纯函数
- lazy_static!将静态值动态化,构建从任意地方可以访问的静态类型
迭代器
- 迭代器trait Iterator
- 命名规范 iter()通过引用获取元素 iter_mut()可变引用 * into_iter()获取值的所有权 我们可以通过实现Iterator实现迭代器
高级类型
- 不定长类型
- 切片 T
- dyn trait 特征对象
- 不定长字段作为最后一个字段的结构体
- &str
- 函数类型:支持函数类型
- never类型!和函数分发 忽略编译器检测
- 联合,支持union,主要是为了对接c语言
- Cow写时复制的智能指针
const fn test1(a: u32) -> u32 {
0xDEADBEEF ^ a
}
fn main() {
println!("{}", test1(12));
let hi = String::from("Hello");
println!("{}", hi);
let tchar = &hi[0..3];
println!("{:?}", tchar);
}