futuresdr 0.0.40

An Experimental Async SDR Runtime for Heterogeneous Architectures.
Documentation
use futuresdr::blocks::Apply;
use futuresdr::runtime::mocker::Mocker;
use futuresdr::runtime::mocker::Reader;
use futuresdr::runtime::mocker::Writer;
use rand::RngExt;
use rand::distr::Uniform;

fn main() {
    let input: Vec<u32> = rand::rng()
        .sample_iter(Uniform::<u32>::new(0, 1024).unwrap())
        .take(64)
        .collect();

    let mut block = Apply::<_, _, _, Reader<_>, Writer<_>>::with_buffers(|x: &u32| x + 1);
    block.input().set(input.clone());
    block.output().reserve(64);

    let mut mocker = Mocker::new(block);
    mocker.run();
    let (output, _) = mocker.output().get();

    assert_eq!(input.len(), output.len());
    for (a, b) in input.iter().zip(output.iter()) {
        assert_eq!(a + 1, *b);
    }
}