ltrait 1.5.0

Yet Another Fuzzy Finder (Builder) for OS Wide, inspired from vim-fall and ddu.vim (and xmonad)
Documentation
use std::pin::Pin;

pub type Source<T> = Pin<Box<dyn tokio_stream::Stream<Item = T> + Send>>;

pub fn from_iter<T, Iter>(
    iter: impl std::iter::IntoIterator<Item = T, IntoIter = Iter>,
) -> Source<T>
where
    Iter: std::iter::Iterator<Item = T> + Send + 'static,
{
    Box::pin(tokio_stream::iter(iter))
}

pub fn transform_source<Cushion, SourceContext, F>(
    source: Source<SourceContext>,
    f: F,
) -> Source<Cushion>
where
    SourceContext: 'static,
    F: Fn(SourceContext) -> Cushion + Send + 'static,
{
    use tokio_stream::StreamExt as _;

    Box::pin(source.map(f))
}