#observer #observable #literals #allowing #constructs #macro #rust-observable

nightly macro rust_observable_literal

Observer literal for the rust_observable crate

1 unstable release

0.1.0 Aug 4, 2023

#11 in #constructs

25 downloads per month
Used in rust_observable

MIT/Apache

4KB
57 lines

Observable

Provides an Observable type used to model push-based data sources. It always uses atomic references, allowing it to be passed to other threads. It is based on a TC39 proposal.

The observer! macro constructs an opaque Observer. You can also implement your own observer type if desired.

Requirements:

  • The Rust standard library (std).
  • Nightly channel.
use rust_observable::*;

fn my_observable() -> Observable<String> {
    Observable::new(|observer| {
        // send initial data
        observer.next("initial value".into());

        // return a cleanup function that runs on unsubscribe.
        || {
            println!("cleanup on unsubscribe");
        }
    })
}

let _ = my_observable()
    .subscribe(observer! {
        next: |value| {},
        error: |error| {},
        complete: || {},
        start: |subscription| {},
    })
    .unsubscribe();

// you can also use functional methods such as `filter` and `map`.
let _ = my_observable()
    .filter(|value| true)
    .map(|value| value);

Dependencies

~335–790KB
~19K SLoC