alef 0.114.0

Opinionated polyglot binding generator for Rust libraries
Documentation
let inner = self.inner.clone();
    {{ bindings_block }}use futures_util::StreamExt;
    let mut stream = {{ core_call }}.await
        .map_err(alef_napi_err)?;
    let (tx, rx) = tokio::sync::mpsc::channel(32);
    tokio::spawn(async move {
        loop {
                        tokio::select! {
                            _ = tx.closed() => break,
                            chunk = stream.next() => {
                                let chunk = match chunk {
                                    Some(c) => c,
                                    None => break,
                                };
                                let item = match chunk {
                                    Ok(c) => {{ item_type }}::from(c),
                                    Err(e) => {
                                        let _ = tx.send(Err(alef_napi_err(e))).await;
                                        break;
                                    }
                                };
                                if tx.send(Ok(item)).await.is_err() {
                                    break;
                                }
                            }
                        }
                    }
                    drop(stream);
    });
    let iter = {{ iter_name }} {
        receiver: Arc::new(tokio::sync::Mutex::new(rx)),
    };
    Ok(iter)