futuresdr 0.0.41

An Experimental Async SDR Runtime for Heterogeneous Architectures.
Documentation
use anyhow::Result;
use futuresdr::blocks::Head;
use futuresdr::blocks::NullSink;
use futuresdr::blocks::VectorSource;
use futuresdr::prelude::*;
use futuresdr::runtime::buffer::DefaultCpuReader;
use futuresdr::runtime::buffer::DefaultCpuWriter;
use futuresdr::runtime::buffer::LocalCpuReader;
use futuresdr::runtime::buffer::LocalCpuWriter;

fn main() -> Result<()> {
    let mut fg = Flowgraph::new();
    let local = fg.local_domain()?;

    let src = fg.add_local(local, || {
        VectorSource::<u8, LocalCpuWriter<u8>>::new(vec![1, 2, 3, 4])
    });
    let head = fg.add_local(local, || {
        Head::<u8, LocalCpuReader<u8>, DefaultCpuWriter<u8>>::new(3)
    });
    let snk = fg.add(NullSink::<u8, DefaultCpuReader<u8>>::new());

    fg.stream_local(&src, |b| b.output(), &head, |b| b.input())?;
    fg.stream(&head, |b| b.output(), &snk, |b| b.input())?;

    let fg = Runtime::new().run(fg)?;
    let snk = fg.block(&snk)?;

    println!("received {} items", snk.n_received());

    Ok(())
}