Index
A
- actor model
- actor supervision, Implementing State Recovery for Actors-Creating Actor Supervision
- actors defined, The Actor Model
- building a basic actor, Building a Basic Actor
- documentation link, The Actor Model
- mutexes versus actors, Building a Basic Actor-Working with Actors Versus Mutexes
- router pattern, Implementing the Router Pattern-Implementing the Router Pattern
- sending a message to an actor, Building a Basic Actor
- state of actors, The Actor Model, Working with Actors Versus Mutexes
- testing actors, Building a Basic Actor
- anyhow library, Integrating Networking into
Our Own Async Runtime
- API calls via reqwest package, Improving HTTP Request Performance with Async
- Arc (atomic reference counting), What Are Threads?
- async closure in static lifetime, Building Our Own Async Queue
- async move, Building Our Own Async Queue
- async programming
- about, What Is Async Rust?, Introduction to Async, Introduction to Processes
- async described, What Is Async?-What Is Async?
- async programming in the wild, Design Patterns
- (see also design patterns)
- async Rust (see async Rust)
- computationally heavy tasks, Increasing Workers and Queues
- coroutines mimicking async behavior, What Are Coroutines?, Mimicking Async Behavior with Coroutines-Mimicking Async Behavior with Coroutines
- deadlocks, Controlling Coroutines, Testing For Deadlocks
- examples of using async, Where Can We Utilize Async?-Improving HTTP Request Performance with Async
- futures, Understanding Tasks, Futures
- generators, Generating with Coroutines
- ownership
- processes, Introduction to Processes-Introduction to Processes
- reactive programming (see reactive programming)
- runtime summary, Building Our Own Async Queue
- synchronous code mix issues, Testing Coroutines
- tasks, Understanding Tasks-Understanding Tasks
- threads, What Are Threads?-What Are Threads?
- async queues
- building your own, Building Our Own Async Queue-Building Our Own Async Queue
- about, Building Our Own Async Queues
- async runtime summary, Building Our Own Async Queue
- background processes, Running Background Processes
- CPU tasks offloaded to new thread pool, Context in Futures, Increasing Workers and Queues
- increasing threads and queues, Increasing Workers and Queues
- join macro created, Creating Our Own Join Macro
- networking (see networking integrated into async runtime)
- Runnable handle, Building Our Own Async Queue
- runtime configured, Configuring Our Runtime-Configuring Our Runtime
- runtime rebuilt, Building a Runtime
- static keyword, Building Our Own Async Queue
- task stealing, Task Stealing-Task Stealing
- task-spawning function, Building Our Own Async Queue
- task-spawning function refactored, Refactoring Our spawn_task Function-Refactoring Our spawn_task Function
- tasks to different queues, Passing Tasks to Different Queues-Passing Tasks to Different Queues
- lazy in evaluation, Task Stealing
- multiple queues, Passing Tasks to Different Queues-Passing Tasks to Different Queues
- async runtime (see runtime)
- async Rust
- async server built
- async tasks (see tasks)
- async-native-tls, Integrating Networking into
Our Own Async Runtime
- async-task, Building Our Own Async Queue
- async/await functions
- AsyncRead trait, Implementing the Tokio AsyncRead Trait-Implementing the Tokio AsyncRead Trait
- Atomic Bool
- atomics, Building Our Display Observer
- audit trail example of futures, Putting It All Together-Putting It All Together
- await keyword (Tokio), Understanding Tasks, Building Our Own Async Queue, Processing Tasks with Local Pools
C
- caching via local pool, Processing Tasks with Local Pools
- callbacks, Getting User Input via Callbacks
- channels
- circuit-breaker pattern, The Circuit-Breaker Pattern-The Circuit-Breaker Pattern
- clearscreen for heater system display, Defining Our Subjects, Building Our Display Observer-Building Our Display Observer, Getting User Input via Callbacks
- Clone trait
- Condvar (conditional variable), What Are Threads?
- connectors, Understanding Executors and Connectors
- Context in futures, Context in Futures-Context in Futures
- cooperative multitasking, Understanding Tasks
- Coroutine trait
- coroutines
- about syntax used in book, Coroutines
- async behavior mimicked by, Mimicking Async Behavior with Coroutines-Mimicking Async Behavior with Coroutines
- described, Coroutines, What Are Coroutines?
- flow control via, Controlling Coroutines-Controlling Coroutines
- Future traits implemented by, Controlling Coroutines
- as generators, Generating with Coroutines
- testing coroutines, Testing Coroutines-Testing Coroutines
- why use, Why Use Coroutines?
- yielding, What Are Coroutines?
- CPU
- Ctrl-C for graceful shutdown, Graceful Shutdowns-Graceful Shutdowns
- custom asynchronous queue, Building Our Own Async Queue-Building Our Own Async Queue
F
- file I/O with async, Where Can We Utilize Async?-Using Async for File I/O
- Flitton, Maxwell, Who Is This Book For?
- flow control via coroutines, Controlling Coroutines-Controlling Coroutines
- flume, Building Our Own Async Queue
- function colors, Testing Coroutines
- Future trait
- futures, Understanding Tasks, Futures
- background tasks, Running Background Processes
- cancel safety, Context in Futures
- Context, Context in Futures-Context in Futures
- example audit trail, Putting It All Together-Putting It All Together
- executors running to completion, Understanding Executors and Connectors
- futures-lite, Building Our Own Async Queue
- non-send futures and local thread pool, Processing Tasks with Local Pools
- passed into Tokio join macro, Understanding Tasks
- pinning, Pinning in Futures-Pinning in Futures
- polling, Futures
- processing of, How Are Futures Processed?
- Rust implementation, High-Level Data Sharing Between Futures
- sharing data between, Sharing Data Between Futures-Sharing Data Between Futures
- testing, Fine-Grained Future Testing-Fine-Grained Future Testing
- timeouts, Context in Futures
- wakers, Context in Futures
- waking remotely, Waking Futures Remotely-Waking Futures Remotely
- futures-lite, Building Our Own Async Queue
M
- Meadows, Donella H., Building Our Heater and Heat-Loss Observer
- memory
- messages via channels over mutexes, Working with Actors Versus Mutexes
- messages via event bus, Enabling Broadcasting with an Event Bus-Interacting with Our Event Bus via Async Tasks
- milliseconds (ms), Where Can We Utilize Async?
- mio crate
- mocking, Performing Basic Sync Testing
- module isolation for async code, Building an Isolated Module-Building an Isolated Module
- Moore’s law dead, Introduction to Async
- mouse movement event loop, Getting User Input via Callbacks
- mpsc (multiproducer, single-consumer channel), Building a Basic Actor
- ms (milliseconds), Where Can We Utilize Async?
- multiproducer, single-consumer channel (see mpsc)
- Mutex (mutual exclusion), What Are Threads?
N
- nanoseconds (ns), Where Can We Utilize Async?
- networking integrated into async runtime
- about, Integrating Networking into
Our Own Async Runtime
- client connection and execution, Connecting and Running Our Client
- connectors, Understanding Executors and Connectors
- dependencies, Integrating Networking into
Our Own Async Runtime
- executors, Understanding Executors and Connectors
- HTTP connection built, Building an HTTP Connection-Building an HTTP Connection
- hyper into async runtime, Integrating hyper into Our Async Runtime
- mio, Introducing mio
- testing network interactions, Testing Network Interactions-Testing Network Interactions
- Tokio AsyncRead trait, Implementing the Tokio AsyncRead Trait-Implementing the Tokio AsyncRead Trait
- Tokio AsyncWrite trait, Implementing the Tokio AsyncWrite Trait-Implementing the Tokio AsyncWrite Trait
- Nichols, Carol, Who Is This Book For?
- non-send futures and local thread pool, Processing Tasks with Local Pools
- ns (nanoseconds), Where Can We Utilize Async?
O
- observer pattern
- building a basic reactive system, Building a Basic Reactive System-Getting User Input via Callbacks
- about, Building a Basic Reactive System
- display observer future built, Building Our Display Observer-Building Our Display Observer
- display of all futures running, Building Our Heater and Heat-Loss Observer
- display with user input, Getting User Input via Callbacks
- feedback simple, Defining Our Subjects
- heat-loss observer future built, Building Our Heater and Heat-Loss Observer
- heater observer future built, Building Our Heater and Heat-Loss Observer-Building Our Heater and Heat-Loss Observer
- oscillating temperature, Building Our Heater and Heat-Loss Observer
- subjects defined, Defining Our Subjects
- user input via callbacks, Getting User Input via Callbacks-Getting User Input via Callbacks
- documentation links, Building a Basic Reactive System
- oneshot::Sender in messages to actors, Building a Basic Actor
- oscillations in output, Building Our Heater and Heat-Loss Observer
- ownership
R
- race conditions tested for, Testing for Race Conditions-Testing for Race Conditions
- reactive programming
- about, Reactive Programming
- broadcasting via event bus, Enabling Broadcasting with an Event Bus-Interacting with Our Event Bus via Async Tasks
- building a basic reactive system, Building a Basic Reactive System-Getting User Input via Callbacks
- about, Building a Basic Reactive System
- display observer future built, Building Our Display Observer-Building Our Display Observer
- display of all futures running, Building Our Heater and Heat-Loss Observer
- display with user input, Getting User Input via Callbacks
- feedback simple, Defining Our Subjects
- heat-loss observer future built, Building Our Heater and Heat-Loss Observer
- heater observer future built, Building Our Heater and Heat-Loss Observer-Building Our Heater and Heat-Loss Observer
- oscillating temperature, Building Our Heater and Heat-Loss Observer
- subjects defined, Defining Our Subjects
- user input via callbacks, Getting User Input via Callbacks-Getting User Input via Callbacks
- real-time responsiveness (see reactive programming)
- Relaxed ordering, What Are Threads?
- reqwest package
- resources for learning Rust, Who Is This Book For?
- resources online
- actor model, The Actor Model
- async closure documentation, Building Our Own Async Queue
- AsyncRead trait documentation, Implementing the Tokio AsyncRead Trait
- Atomic Bool, What Are Threads?
- atomics documentation, Reactive Programming
- book web page, How to Contact Us
- design pattern documentation
- green threads documentation, What Are Threads?
- observer pattern documentation, Building a Basic Reactive System
- pinning and unpinning, Pinning in Futures
- procedural macro documentation, Configuring Our Runtime
- Rust by Example, Who Is This Book For?
- Rust RFC Book
- state machines, The State Machine Pattern
- retry pattern, The Retry Pattern
- router pattern with actor model, Implementing the Router Pattern-Implementing the Router Pattern
- Runnable handle, Building Our Own Async Queue
- runtime
- Rust
- Rust by Example (Rust online community), Who Is This Book For?
- The Rust Programming Language (Klabnik and Nichols), Who Is This Book For?
- Rust Web Programming (Flitton), Who Is This Book For?
S
- schedulers
- segmentation faults, Pinning in Futures
- Send trait
- server built (see async server built)
- SIGHUP signal for graceful shutdown, Graceful Shutdowns
- sleep function
- smol, Integrating Networking into
Our Own Async Runtime
- sockets
- spawn_blocking function (Tokio), Processing Tasks with Local Pools
- spawn_task function, Building Our Own Async Queue
- state
- state machine documentation link, The State Machine Pattern
- state machine pattern, The State Machine Pattern-The State Machine Pattern
- streaming data via a coroutine generator, Implementing a Simple Generator in Rust
- subroutines compared to coroutines, What Are Coroutines?
- subscribers to event bus messaging, Enabling Broadcasting with an Event Bus-Interacting with Our Event Bus via Async Tasks
- supply chain oscillations, Building Our Heater and Heat-Loss Observer
- suspending execution then resuming (see coroutines)
- symmetric coroutines, Calling a Coroutine from a Coroutine-Calling a Coroutine from a Coroutine
- Sync trait implemented by JoinHandle, What Are Threads?
T
- TAP (task-based asynchronous pattern), Understanding Tasks-Understanding Tasks
- task stealing, Task Stealing-Task Stealing
- task-based asynchronous pattern (TAP), Understanding Tasks-Understanding Tasks
- task-spawning function (see spawn_task function)
- tasks, Understanding Tasks-Understanding Tasks
- background processes, Running Background Processes
- coroutines compared to async tasks, Why Use Coroutines?
- deadlocks, Controlling Coroutines, Testing For Deadlocks
- definition, Understanding Tasks
- event bus interactions, Interacting with Our Event Bus via Async Tasks
- futures, Understanding Tasks
- cancel safety, Context in Futures
- Context, Context in Futures-Context in Futures
- example audit trail, Putting It All Together-Putting It All Together
- high-level data sharing between, High-Level Data Sharing Between Futures
- passed into join macro, Understanding Tasks
- pinning, Pinning in Futures-Pinning in Futures
- pinning documentation link, Pinning in Futures
- poll pending, Running Background Processes
- polling, Futures, High-Level Data Sharing Between Futures
- polling via Rust async, Building Our Own Async Queue
- polling without stopping, Running Background Processes
- processing of, How Are Futures Processed?
- sharing data between, Sharing Data Between Futures-Sharing Data Between Futures
- static keyword, Building Our Own Async Queue
- timeouts, Context in Futures
- waking remotely, Waking Futures Remotely-Waking Futures Remotely
- laziness of queues and channels, Task Stealing
- multiple queues, Passing Tasks to Different Queues-Passing Tasks to Different Queues
- Runnable handle, Building Our Own Async Queue
- spawn_task function, Building Our Own Async Queue
- wakers, Context in Futures
- TCP
- TCP server built
- temperature reactive system, Building a Basic Reactive System-Getting User Input via Callbacks
- testing
- about, Testing
- actors, Building a Basic Actor
- arrange, act, assert, Performing Basic Sync Testing
- basic sync testing, Performing Basic Sync Testing-Performing Basic Sync Testing
- channel capacity, Testing Channel Capacity
- coroutines tested easily, Controlling Coroutines
- for deadlocks, Testing For Deadlocks-Testing For Deadlocks
- fine-grained future testing, Fine-Grained Future Testing-Fine-Grained Future Testing
- fixtures as decorator pattern, The Decorator Pattern
- global state in async Rust, Implementing the Router Pattern
- mocking, Performing Basic Sync Testing
- race conditions, Testing for Race Conditions-Testing for Race Conditions
- Thinking in Systems (Meadows), Building Our Heater and Heat-Loss Observer
- thread pools
- threads, What Are Threads?-What Are Threads?
- timeouts, Context in Futures
- timing the running of scripts, Introduction to Processes
- Tokio runtime
- AsyncRead trait, Implementing the Tokio AsyncRead Trait-Implementing the Tokio AsyncRead Trait
- AsyncWrite trait, Implementing the Tokio AsyncWrite Trait-Implementing the Tokio AsyncWrite Trait
- basic asynchronous code, What Is Async?
- broadcast channels, Enabling Broadcasting with an Event Bus
- building a runtime, Building a Runtime-Building a Runtime
- graceful shutdowns, Graceful Shutdowns-Graceful Shutdowns
- green threads implemented, What Are Threads?
- join macro
- local pools for processing tasks, Processing Tasks with Local Pools-Processing Tasks with Local Pools
- mio crate as foundation, Introducing mio
- networking (see networking integrated into async runtime)
- parking threads quickly, Building a Runtime
- reactive heater system, Defining Our Subjects
- runtime struct, Configuring Our Runtime
- sleep function
- spawn_blocking function, Processing Tasks with Local Pools
- tasks, Understanding Tasks-Understanding Tasks
- test macro, Testing For Deadlocks
- timeouts, Context in Futures
- UnsafeCell for thread data, Getting Unsafe with Thread Data
- tombstoning deleted records, Interacting with Our Event Bus via Async Tasks
- traits
- transactions written to files, Implementing State Recovery for Actors
- try_lock