rust的高级特性

2022-05-10 22:08:20 浏览数 (2)

类型系统

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写时复制的智能指针
代码语言:rust复制
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);
}

0 人点赞