思维导图备注

Comprehensive Rust (202412)
召唤码灵薯 首页 白天 夜间 BookChat 小程序 小程序 阅读
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

64. Channels and Control Flow

 Github  来源:Google 浏览 95 扫码 分享 2024-12-04 16:44:43
  • Channels and Control Flow

    Channels and Control Flow

    This segment should take about 20 minutes. It contains:

    SlideDuration
    Async Channels10 minutes
    Join4 minutes
    Select5 minutes
    当前内容版权归 Google 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Google .
    上一篇:
    下一篇:
    • 书签
    • 添加书签 移除书签
    • Comprehensive Rust 简体中文 (202412)
    • Comprehensive Rust (202412)
    • Comprehensive Rust 🦀 (202302)
    • Welcome to Comprehensive Rust 🦀
    • 1. Running the Course
      • 1.1. Course Structure
      • 1.2. Keyboard Shortcuts
      • 1.3. Translations
    • 2. Using Cargo
      • 2.1. Rust Ecosystem
      • 2.2. Code Samples
      • 2.3. Running Cargo Locally
    • 3. Welcome
    • 4. Hello, World
      • 4.1. What is Rust?
      • 4.2. Benefits of Rust
      • 4.3. Playground
    • 5. Types and Values
      • 5.1. Hello, World
      • 5.2. Variables
      • 5.3. Values
      • 5.4. Arithmetic
      • 5.5. Type Inference
      • 5.6. Exercise: Fibonacci
        • 5.6.1. Solution
    • 6. Control Flow Basics
      • 6.1. if Expressions
      • 6.2. Loops
        • 6.2.1. for
        • 6.2.2. loop
      • 6.3. break and continue
        • 6.3.1. Labels
      • 6.4. Blocks and Scopes
        • 6.4.1. Scopes and Shadowing
      • 6.5. Functions
      • 6.6. Macros
        • 6.7. Exercise: Collatz Sequence
          • 6.7.1. Solution
    • 7. Welcome
    • 8. Tuples and Arrays
      • 8.1. Arrays
      • 8.2. Tuples
      • 8.3. Array Iteration
      • 8.4. Patterns and Destructuring
      • 8.5. Exercise: Nested Arrays
        • 8.5.1. Solution
    • 9. References
      • 9.1. Shared References
      • 9.2. Exclusive References
      • 9.3. Slices
      • 9.4. Strings
      • 9.5. Exercise: Geometry
        • 9.5.1. Solution
    • 10. User-Defined Types
      • 10.1. Named Structs
      • 10.2. Tuple Structs
      • 10.3. Enums
      • 10.4. Const
      • 10.5. Static
      • 10.6. Type Aliases
      • 10.7. Exercise: Elevator Events
        • 10.7.1. Solution
          • 11. Welcome
          • 12. Pattern Matching
      • 12.1. Matching Values
      • 12.2. Destructuring Structs
      • 12.3. Destructuring Enums
      • 12.4. Let Control Flow
      • 12.5. Exercise: Expression Evaluation
        • 12.5.1. Solution
    • 13. Methods and Traits
      • 13.1. Methods
      • 13.2. Traits
        • 13.2.1. Implementing Traits
        • 13.2.2. Supertraits
        • 13.2.3. Associated Types
      • 13.3. Deriving
      • 13.4. Exercise: Generic Logger
        • 13.4.1. Solution
    • 14. Welcome
      • 15. Generics
        • 15.1. Generic Functions
        • 15.2. Generic Data Types
        • 15.3. Generic Traits
        • 15.4. Trait Bounds
        • 15.5. impl Trait
        • 15.6. dyn Trait
        • 15.7. Exercise: Generic min
          • 15.7.1. Solution
    • 16. Standard Library Types
      • 16.1. Standard Library
      • 16.2. Documentation
      • 16.3. Option
      • 16.4. Result
      • 16.5. String
      • 16.6. Vec
      • 16.7. HashMap
      • 16.8. Exercise: Counter
        • 16.8.1. Solution
    • 17. Standard Library Traits
      • 17.1. Comparisons
      • 17.2. Operators
      • 17.3. From and Into
      • 17.4. Casting
      • 17.5. Read and Write
      • 17.6. Default, struct update syntax
      • 17.7. Closures
      • 17.8. Exercise: ROT13
        • 17.8.1. Solution
    • 18. Welcome
    • 19. Memory Management
      • 19.1. Review of Program Memory
      • 19.2. Approaches to Memory Management
      • 19.3. Ownership
      • 19.4. Move Semantics
      • 19.5. Clone
      • 19.6. Copy Types
      • 19.7. Drop
      • 19.8. Exercise: Builder Type
        • 19.8.1. Solution
    • 20. Smart Pointers
      • 20.1. Box<T>
      • 20.2. Rc
      • 20.3. Owned Trait Objects
      • 20.4. Exercise: Binary Tree
        • 20.4.1. Solution
    • 21. Welcome
    • 22. Borrowing
      • 22.1. Borrowing a Value
      • 22.2. Borrow Checking
      • 22.3. Borrow Errors
      • 22.4. Interior Mutability
      • 22.5. Exercise: Health Statistics
        • 22.5.1. Solution
    • 23. Lifetimes
      • 23.1. Lifetime Annotations
      • 23.2. Lifetime Elision
      • 23.3. Struct Lifetimes
      • 23.4. Exercise: Protobuf Parsing
        • 23.4.1. Solution
    • 24. Welcome
    • 25. Iterators
      • 25.1. Iterator
      • 25.2. IntoIterator
      • 25.3. FromIterator
      • 25.4. Exercise: Iterator Method Chaining
        • 25.4.1. Solution
    • 26. Modules
      • 26.1. Modules
      • 26.2. Filesystem Hierarchy
      • 26.3. Visibility
      • 26.4. use, super, self
      • 26.5. Exercise: Modules for a GUI Library
        • 26.5.1. Solution
    • 27. Testing
      • 27.1. Test Modules
      • 27.2. Other Types of Tests
      • 27.3. Compiler Lints and Clippy
      • 27.4. Exercise: Luhn Algorithm
        • 27.4.1. Solution
    • 28. Welcome
    • 29. Error Handling
      • 29.1. Panics
      • 29.2. Result
      • 29.3. Try Operator
      • 29.4. Try Conversions
      • 29.5. Error Trait
      • 29.6. thiserror
      • 29.7. anyhow
      • 29.8. Exercise: Rewriting with Result
        • 29.8.1. Solution
    • 30. Unsafe Rust
      • 30.1. Unsafe
      • 30.2. Dereferencing Raw Pointers
      • 30.3. Mutable Static Variables
      • 30.4. Unions
      • 30.5. Unsafe Functions
      • 30.6. Unsafe Traits
      • 30.7. Exercise: FFI Wrapper
        • 30.7.1. Solution
    • 31. Welcome
    • 32. Setup
    • 33. Build Rules
      • 33.1. Binary
      • 33.2. Library
    • 34. AIDL
      • 34.1. Birthday Service Tutorial
        • 34.1.1. Interface
        • 34.1.2. Service API
        • 34.1.3. Service
        • 34.1.4. Server
        • 34.1.5. Deploy
        • 34.1.6. Client
        • 34.1.7. Changing API
        • 34.1.8. Updating Implementations
      • 34.2. AIDL Types
        • 34.2.1. Primitive Types
        • 34.2.2. Array Types
        • 34.2.3. Sending Objects
        • 34.2.4. Parcelables
        • 34.2.5. Sending Files
    • 35. Testing
      • 35.1. GoogleTest
      • 35.2. Mocking
    • 36. Logging
    • 37. Interoperability
      • 37.1. With C
        • 37.1.1. Calling C with Bindgen
        • 37.1.2. Calling Rust from C
      • 37.2. With C++
        • 37.2.1. The Bridge Module
        • 37.2.2. Rust Bridge
        • 37.2.3. Generated C++
        • 37.2.4. C++ Bridge
        • 37.2.5. Shared Types
        • 37.2.6. Shared Enums
        • 37.2.7. Rust Error Handling
        • 37.2.8. C++ Error Handling
        • 37.2.9. Additional Types
        • 37.2.10. Building for Android: C++
        • 37.2.11. Building for Android: Genrules
        • 37.2.12. Building for Android: Rust
      • 37.3. With Java
    • 38. Welcome
    • 39. Setup
    • 40. Comparing Chromium and Cargo Ecosystems
    • 41. Policy
    • 42. Build Rules
      • 42.1. Unsafe Code
      • 42.2. Depending on Rust Code from Chromium C++
      • 42.3. Visual Studio Code
      • 42.4. Exercise
    • 43. Testing
      • 43.1. rust_gtest_interop Library
      • 43.2. GN Rules for Rust Tests
      • 43.3. chromium::import! Macro
      • 43.4. Exercise
    • 44. Interoperability with C++
      • 44.1. Example Bindings
      • 44.2. Limitations of CXX
      • 44.3. CXX Error Handling
        • 44.3.1. Error Handling: QR Example
        • 44.3.2. Error Handling: PNG Example
      • 44.4. Using CXX in Chromium
      • 44.5. Exercise
    • 45. Adding Third Party Crates
      • 45.1. Configuring Cargo.toml
      • 45.2. Configuring gnrt_config.toml
      • 45.3. Downloading Crates
      • 45.4. Generating gn Build Rules
      • 45.5. Resolving Problems
        • 45.5.1. Build Scripts Which Generate Code
        • 45.5.2. Build Scripts Which Build C++ or Take Arbitrary Actions
      • 45.6. Depending on a Crate
      • 45.7. Reviews and Audits
      • 45.8. Checking into Chromium Source Code
        • 45.9. Keeping Crates Up to Date
        • 45.10. Exercise
    • 46. Bringing It Together - Exercise
    • 47. Exercise Solutions
    • 48. Welcome
    • 49. no_std
      • 49.1. A Minimal Example
      • 49.2. alloc
    • 50. Microcontrollers
      • 50.1. Raw MMIO
      • 50.2. PACs
      • 50.3. HAL Crates
      • 50.4. Board Support Crates
      • 50.5. The Type State Pattern
      • 50.6. embedded-hal
      • 50.7. probe-rs and cargo-embed
        • 50.7.1. Debugging
      • 50.8. Other Projects
    • 51. Exercises
      • 51.1. Compass
      • 51.2. Solutions
    • 52. Application Processors
      • 52.1. Getting Ready to Rust
      • 52.2. Inline Assembly
      • 52.3. MMIO
      • 52.4. Let’s Write a UART Driver
        • 52.4.1. More Traits
      • 52.5. A Better UART Driver
        • 52.5.1. Bitflags
        • 52.5.2. Multiple Registers
        • 52.5.3. Driver
        • 52.5.4. Using It
      • 52.6. Logging
        • 52.6.1. Using It
        • 52.7. Exceptions
        • 52.8. Other Projects
    • 53. Useful Crates
      • 53.1. zerocopy
      • 53.2. aarch64-paging
      • 53.3. buddy_system_allocator
      • 53.4. tinyvec
      • 53.5. spin
    • 54. Bare-Metal on Android
      • 54.1. vmbase
    • 55. Exercises
      • 55.1. RTC Driver
      • 55.2. Solutions
    • 56. Welcome
    • 57. Threads
      • 57.1. Plain Threads
      • 57.2. Scoped Threads
    • 58. Channels
      • 58.1. Senders and Receivers
      • 58.2. Unbounded Channels
      • 58.3. Bounded Channels
    • 59. Send and Sync
      • 59.1. Marker Traits
      • 59.2. Send
      • 59.3. Sync
      • 59.4. Examples
    • 60. Shared State
      • 60.1. Arc
      • 60.2. Mutex
      • 60.3. Example
    • 61. Exercises
      • 61.1. Dining Philosophers
      • 61.2. Multi-threaded Link Checker
      • 61.3. Solutions
    • 62. Welcome
      • 63. Async Basics
      • 63.1. async/await
      • 63.2. Futures
      • 63.3. Runtimes
        • 63.3.1. Tokio
      • 63.4. Tasks
    • 64. Channels and Control Flow
      • 64.1. Async Channels
      • 64.2. Join
      • 64.3. Select
    • 65. Pitfalls
      • 65.1. Blocking the Executor
      • 65.2. Pin
      • 65.3. Async Traits
      • 65.4. Cancellation
    • 66. Exercises
      • 66.1. Dining Philosophers
      • 66.2. Broadcast Chat Application
      • 66.3. Solutions
    • 67. Thanks!
    • 68. Glossary
    • 69. Other Resources
    • 70. Credits
    暂无相关搜索结果!

      本文档使用 BookStack 构建

      展开/收起文章目录

      分享,让知识传承更久远

      文章二维码

      手机扫一扫,轻松掌上读

      文档下载

      • 普通下载
      • 下载码下载(免登录无限下载)
      你与大神的距离,只差一个APP
      APP下载
      请下载您需要的格式的文档,随时随地,享受汲取知识的乐趣!
      PDF文档 EPUB文档 MOBI文档
      温馨提示 每天每在网站阅读学习一分钟时长可下载一本电子书,每天连续签到可增加阅读时长
      下载码方式下载:免费、免登录、无限制。 免费获取下载码

      微信小程序阅读

      BookChat 微信小程序阅读
      您与他人的薪资差距,只差一个随时随地学习的小程序

      书签列表

        阅读记录

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

          欢迎使用【码灵薯·CoderBot】 码灵薯·CoderBot
          全屏 缩小 隐藏 新标签