Comprehensive Rust 简体中文 (202412)
首页 白天 夜间 BookChat 小程序 小程序 下载 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

65. 误区

来源 Google 浏览 1 扫码 打印 2026-10-24 14:07:56
  • 关于 async/await 的误区

关于 async/await 的误区

async / await 为处理并发异步编程提供了一种方便高效的抽象方法。然而,Rust 中的 async/await 模型也存在一些误区和隐患。本章将展示其中的部分内容:

  • 阻塞执行器
  • 固定
  • 异步 trait
  • 取消
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 欢迎来到 Comprehensive Rust 🦀
  • 1. 授课
  • 1.1. 课程结构
    • 1.2. 键盘快捷键
    • 1.3. 翻译
  • 2. 使用 Cargo
    • 2.1. Rust 生态系统
    • 2.2. 代码示例
    • 2.3. 在本地运行 Cargo
  • 3. 欢迎
  • 4. Hello, World
    • 4.1. 什么是 Rust?
    • 4.2. Rust 的优势
    • 4.3. Playground
  • 5. 类型和值
    • 5.1. Hello, World
    • 5.2. 变量
    • 5.3. 值
    • 5.4. 算术
    • 5.5. 类型推导
    • 5.6. 练习:Fibonacci
      • 5.6.1. 解答
  • 6. 控制流基础
    • 6.1. if 表达式
    • 6.2. 循环控制
      • 6.2.1. for
      • 6.2.2. loop
    • 6.3. break 和 continue
      • 6.3.1. Labels
    • 6.4. 代码块和作用域
      • 6.4.1. 作用域和遮蔽(Shadowing)
    • 6.5. 函数
    • 6.6. 宏
    • 6.7. 练习:考拉兹序列
      • 6.7.1. 解答
  • 7. 欢迎
  • 8. 元组和数组
    • 8.1. 数组(Arrays)
    • 8.2. 元组(Tuples)
    • 8.3. 数组迭代
    • 8.4. 解构
    • 8.5. 练习:嵌套数组
      • 8.5.1. 解答
  • 9. 引用
    • 9.1. 共享引用
    • 9.2. 独占引用
    • 9.3 切片
    • 9.4. 字符串
    • 9.5. 练习:几何图形
      • 9.5.1. 解答
  • 10. 用户定义的类型
    • 10.1. 结构体
    • 10.2. 元组结构体
    • 10.3. 枚举
    • 10.4. static
    • 10.5. 常量
    • 10.6. 类型别名
    • 10.7. 练习:电梯事件
      • 10.7.1. 解答
  • 11. 欢迎
  • 12. 模式匹配
    • 12.1. Matching Values
    • 12.2. 解构
    • 12.3. let 控制流
    • 12.4. 练习:表达式求值
      • 12.4.1. 解答
  • 13. 方法和特征
    • 13.1. 方法
    • 13.2. 特征(Trait)
    • 13.2.1. 实现 Unsafe Trait
      • 13.2.2. 更多 trait
      • 13.2.3. 共享类型
    • 13.3. 派生特征
    • 13.4. 练习:通用日志
      • 13.4.1. 解答
  • 14. 泛型
    • 14.1. 泛型函数
    • 14.2. 泛型类型
    • 14.3. 泛型
    • 14.4. 特征边界
    • 14.5. impl Trait
    • 14.6. 练习:通用 min 函数
      • 14.6.1. 解答
  • 15. 欢迎
  • 16. 标准库类型
    • 16.1. 标准库
    • 16.2. 文档
    • 16.3. Option
    • 16.4. Result
    • 16.5. String
    • 16.6. Vec
    • 16.7. HashMap
    • 16.8. 练习:计数器
      • 16.8.1. 解答
  • 17. 标准库特征
    • 17.1. 比较
    • 17.2. 运算符
    • 17.3. From 和 Into
    • 17.4. 类型转换
    • 17.5. Read 和 Write
    • 17.6. Default,结构体更新语法
    • 17.7. 闭包
    • 17.8. 练习:ROT13
      • 17.8.1. 解答
  • 18. 欢迎
  • 19. 内存管理
    • 19.1. 回顾:程序的内存分配
    • 19.2. 内存管理方法
    • 19.3. 所有权
    • 19.4. 移动语义
    • 19.5. Clone
    • 19.6. 复合类型
    • 19.7. Drop
    • 19.8. 练习:构建器类型
      • 19.8.1. 解答
  • 20. 智能指针
    • 20.1. Box<T>
    • 20.2. Rc
    • 20.3. 特征对象
    • 20.4. 练习:二叉树
      • 20.4.1. 解答
  • 21. 欢迎
  • 22. 借用
    • 22.1. 借用值
    • 22.2. 借用检查
    • 22.3. 内部可变性
    • 22.4. 练习:健康统计
      • 22.4.1. 解答
  • 23. 结构体生命周期
    • 23.1. 生命周期注解
    • 23.2. 生命周期省略
    • 23.3. 结构体生命周期
    • 23.4. 练习:Protobuf 解析
      • 23.4.1. 解答
  • 24. 欢迎
  • 25. 迭代器
    • 25.1. Iterator
    • 25.2. IntoIterator
    • 25.3. FromIterator
    • 25.4. 练习:迭代器方法链
      • 25.4.1. 解答
  • 26. 模块
    • 26.1. 模块
    • 26.2. 文件系统层级结构
    • 26.3. 可见性
    • 26.4. use、super、self
    • 26.5. 练习:面向 GUI 库的模块
      • 26.5.1. 解答
  • 27. 测试
    • 27.1. 测试模块
    • 27.2. 其他类型的测试
    • 27.3. 编译器 Lint 和 Clippy
    • 27.4. 练习:卢恩算法
      • 27.4.1. 解答
  • 28. 欢迎
  • 29. 错误处理
    • 29.1. Panics
    • 29.2. 尝试运算符
    • 29.3. 尝试转换
    • 29.4. Error 特征
    • 29.5. thiserror 和 anyhow
    • 29.6. 练习:使用 Result 进行重写
      • 29.6.1. 解答
  • 30. 不安全 Rust
    • 30.1. Unsafe
    • 30.2. 解引用裸指针
    • 30.3. 可变的静态变量
    • 30.4. 联合体
    • 30.5. Unsafe 函数
    • 30.6. Unsafe 特征
    • 30.7. 练习:FFI 封装容器
    • 30.7.1. 解答
  • 31. 欢迎
  • 32. 设置
  • 33. 构建规则
    • 33.1. 可执行文件
    • 33.2. 库
  • 34. AIDL
    • 34.1. Birthday service interface.
      • 34.1.1. 接口
      • 34.1.2. Service API
      • 34.1.3. 服务器
      • 34.1.4. 服务器
      • 34.1.5. 部署
      • 34.1.6. 客户端
      • 34.1.7. 更改 API
      • 34.1.8. 实现
    • 34.2. 类型
      • 34.2.1. Primitive Types
      • 34.2.2. 数组(Arrays)
      • 34.2.3. 特征对象
      • 34.2.4. 变量
      • 34.2.5. Sending Files
  • 35. 测试
    • 35.1. GoogleTest
    • 35.2. 模拟
  • 36. 日志记录
  • 37. 互操作性
    • 37.1. 与 C 语言交互
      • 37.1.1. 使用 Bindgen 调用 C 语言
      • 37.1.2. 从 C 语言调用 Rust 语言
    • 37.2. 与 C++ 交互
      • 37.2.1. 桥接模块
      • 37.2.2. Rust 桥接
      • 37.2.3. 生成的 C++ 代码
      • 37.2.4. C++ 桥接
      • 37.2.5. 共享类型
      • 37.2.6. 共享枚举
      • 37.2.7. Rust 错误处理
      • 37.2.8. C++ 错误处理
      • 37.2.9. 其他类型
      • 37.2.10. 为 Android 构建:C++
      • 37.2.11. 为 Android 构建:Genrule
      • 37.2.12. 为 Android 构建:Rust
    • 37.3. 与 Java 交互
  • 38. 习题
  • 39. 欢迎
  • 40. 设置
  • 41. Chromium 和 Cargo 的生态对比
  • 42. 政策
  • 43. 构建规则
    • 43.1. 不安全代码
    • 43.2. 在 Chromium C++ 中导入 Rust 代码
    • 43.3. Visual Studio Code
    • 43.4. 练习
  • 44. 测试
    • 44.1. rust_gtest_interop 库
    • 44.2. Rust 测试的 GN 规则
    • 44.3. chromium::import! 宏
    • 44.4. 练习
  • 45. 与 C++ 的互操作性
    • 45.1. 绑定示例
    • 45.2. CXX 的局限性
    • 45.3. CXX 错误处理
      • 45.3.1. 错误处理:QR 码示例
      • 45.3.2. 错误处理:PNG 示例
    • 45.4. 在 Chromium 中使用 CXX
    • 45.5. 练习
  • 46. 添加第三方 Crate
    • 46.1. 配置 Cargo.toml
    • 46.2. 配置 gnrt_config.toml
    • 46.3. 下载 Crate
    • 46.4. 生成 gn 构建规则
    • 46.5. 解决问题
      • 46.5.1. 构建用于生成代码的脚本
      • 46.5.2. 构建用于构建 C++ 或执行任意操作的脚本
    • 46.6. 依赖于 Crate
    • 46.7. 审查和审核
    • 46.8. 提交到 Chromium 源代码
    • 46.9. 及时更新 Crate
    • 46.10. 练习
  • 47. 综合应用练习
  • 48. 练习解答
  • 49. 欢迎
  • 50. no_std
    • 50.1. 最小示例
    • 50.2. alloc
  • 51. 微控制器
    • 51.1. 原始 MMIO
    • 51.2. PAC
    • 51.3. HAL Crate
    • 51.4. 板级支持 Crate
    • 51.5. 类型状态模式
    • 51.6. embedded-hal
    • 51.7. probe-rs 和 cargo-embed
      • 51.7.1. 调试
    • 51.8. 其他项目
  • 52. 习题
    • 52.1. 罗盘
    • 52.2. 解答
  • 53. 应用处理器
    • 53.1. 准备使用 Rust
    • 53.2. 内联汇编
    • 53.3. MMIO
    • 53.4. 编写 UART 驱动程序
      • 53.4.1. 更多特征
    • 53.5. 优化 UART 驱动程序
      • 53.5.1. Bitflags
      • 53.5.2. 多寄存器
      • 53.5.3. 驱动程序
      • 53.5.4. 开始使用
    • 53.6. 日志记录
      • 53.6.1. 开始使用
    • 53.7. 异常
    • 53.8. 其他项目
  • 54. 实用 Crate
    • 54.1. zerocopy
    • 54.2. aarch64-paging
    • 54.3. buddy_system_allocator
    • 54.4. tinyvec
    • 54.5. spin
  • 55. Android
    • 55.1. vmbase
  • 56. 习题
    • 56.1. RTC 驱动
    • 56.2. 解答
  • 57. 欢迎
  • 58. 线程
    • 58.1. 范围线程
  • 59. 通道
    • 59.1. 无界通道
    • 59.2. 有界通道
  • 60. Send 和 Sync
    • 60.1. Send
    • 60.2. Sync
    • 60.3. 示例
  • 61. 共享状态
    • 61.1. Arc
    • 61.2. 互斥器(Mutex)
    • 61.3. 示例
  • 62. 习题
    • 62.1. 哲学家就餐问题
    • 62.2. 多线程链接检查器
    • 62.3. 解答
  • 63. 异步基础
    • 63.1. async/await
    • 63.2. Futures
    • 63.3. Runtimes
      • 63.3.1. Tokio
    • 63.4. 任务
    • 63.5. 异步通道
  • 64. 控制流
    • 64.1. 加入
    • 64.2. 选择
  • 65. 误区
    • 65.1. 阻塞执行器
    • 65.2. Pin
    • 65.3. 异步特征
    • 65.4. 消除
  • 66. 习题
    • 66.1. 哲学家就餐问题
    • 66.2. 广播聊天应用
    • 66.3. 解答
  • 67. 谢谢!
  • 68. 词汇表
  • 69. 其他资源
  • 70. 鸣谢
暂无相关搜索结果!

    本文档使用 WanXiangYunDang 构建

    展开/收起文章目录

    思维导图备注

    文章二维码

    手机扫一扫,轻松掌上读

    文档下载

    请下载您需要的格式的文档,随时随地,享受汲取知识的乐趣!
    PDF文档 EPUB文档 MOBI文档

    微信小程序阅读

    BookChat 微信小程序阅读
    微信扫一扫,知识掌上学

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度