ferroui-dynamic-data 0.3.0

A port of DynamicData for FerroUI: reactive collections, change sets, observable caches and lists with their operators, independent of the user interface
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
//! `Cast<TSource, TKey, TDestination>` (`Cache/Internal/Cast.cs`).

use crate::cache::cache_change_set_ex::transform_change_set;
use crate::cache::ChangeSet;
use ferroui_reactive::ObservableExt;
use ferroui_system::IObservable;
use std::rc::Rc;

/// `Cast.Run`: each item, and each previous item, converted by `converter`.
pub(crate) fn cast<T: 'static, U: 'static, K: Clone + 'static>(source: Rc<dyn IObservable<ChangeSet<T, K>>>, converter: Rc<dyn Fn(&T) -> U>) -> Rc<dyn IObservable<ChangeSet<U, K>>> {
    source.select(move |changes: ChangeSet<T, K>| transform_change_set(&changes, &*converter))
}