#observable #data-source #observer #subscription #push-based #cleanup #subscribe

nightly rust_observable

基于推送的数据源 Observable 类型

5 个版本

0.2.1 2023 年 8 月 5 日
0.2.0 2023 年 8 月 5 日
0.1.2 2023 年 8 月 5 日
0.1.1 2023 年 8 月 4 日
0.1.0 2023 年 8 月 4 日

#17 in #subscribe

MIT/Apache

19KB
380 代码行(不包括注释)

Observable

提供了一个用于模型化基于推送的数据源的 Observable 类型。它始终使用原子引用,允许它在其他线程中传递。它基于 TC39 建议。

observer! 宏构建了一个不可见的 Observer。您也可以根据需要实现自己的观察者类型。

要求

  • Rust 标准库 (std)。
  • 夜间频道。
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);

依赖项

~280–730KB
~18K SLoC