Rust
No related notes
Outlinks (0)
No outlinks found
Backlinks (0)
No backlinks found
1 · Rust#
1.1 · 初识rust#
- 性能:没有运行时、没有垃圾回收器
- 可靠性:富类型系统、所有权模型,保证内存安全、线程安全,在编译器发现许多问题
- 生产力:文档、友好报错信息的编译器、一流的工具
- 没有运行时?所有特性都是零成本抽象,不会有额外的运行时操作
- 没有垃圾回收器?RAII,初始化对象即申请内存,对象结束使用则释放内存
- 所有权模型:保证一个值只能被一个变量拥有(负责释放)
- 借用:把引用看作借用,分只读、可写,读写互斥;编译期进行引用有效期分析(生命周期)
- 富类型系统:编译器通过许多trait表达的语义严格检查类型可以做什么
- 错误处理:Option、Result
- 函数式特性:迭代器(惰性求值、链式组合)、闭包、高阶函数、默认不可变
类型(数据是什么)、所有权(谁负责资源)、借用(怎么访问数据)、生命周期(数据活多久)、trait(能做什么)
the book: https://doc.rust-lang.org/book the std lib: https://doc.rust-lang.org/std/index.html
1.2 · 错误处理
错误是值。
错误是类型系统的一部分,不可被静默忽略。
错误通过enum实现(库类型Result<T,E>):
- 穷举:
match模式匹配穷举所有错误 - 传播:
?向上传播给调用方 - 组合:错误集之间需手动转换(
From/thiserror/anyhow) - 信息:E可以是任意类型,携带丰富错误信息
- 恢复:就地降级(
unwrap_or/unwrap_or_default)