Module yew_agent::reactor

source ·
Expand description

This module contains the reactor agent implementation.

Reactor agents are agents that receive multiple inputs and send multiple outputs over a single bridge. A reactor is defined as an async function that takes a ReactorScope as the argument.

The reactor scope is a stream that produces inputs from the bridge and a sink that implements an additional send method to send outputs to the connected bridge. When the bridge disconnects, the output stream and input sink will be closed.

Example

use futures::sink::SinkExt;
use futures::stream::StreamExt;
use yew_agent::reactor::{reactor, ReactorScope};
#[reactor(MyReactor)]
pub async fn my_reactor(mut scope: ReactorScope<ReactorInput, ReactorOutput>) {
    while let Some(input) = scope.next().await {
        // handles each input.
        // ...

        // sends output
        if scope.send(output).await.is_err() {
            // sender closed, the bridge is disconnected
            break;
        }
    }
}

Structs

Enums

Traits

  • A reactor worker.
  • A helper trait to extract the input and output type from a [ReactorStream].

Functions

Attribute Macros

  • A procedural macro to create reactor agents.