serde_aggregate 0.1.0

Iterate through serialized sequences allowing to aggregate them without deserializing to an allocated collection.
Documentation
use std::{fs::File, io::BufReader, path::PathBuf};

struct Imp;

impl serde_deser_iter::deep::FoldAggregator for Imp {
    type Item = u64;
    type Acc = u64;

    fn init() -> u64 {
        0
    }

    fn f(acc: u64, item: u64) -> u64 {
        acc.max(item)
    }
}

#[derive(serde::Deserialize)]
struct BitCoin {
    #[serde(rename = "txIndexes")]
    tx_indexes: serde_deser_iter::deep::StreamSeqDeser<serde_deser_iter::deep::Fold<Imp>>,
}

fn main() -> anyhow::Result<()> {
    let example_json_path: PathBuf = [env!("CARGO_MANIFEST_DIR"), "examples", "deep_bitcoin.json"]
        .iter()
        .collect();
    let buffered_file: BufReader<File> = BufReader::new(File::open(example_json_path)?);

    let content: BitCoin = serde_json::from_reader(buffered_file)?;
    println!("Max transaction: {}", content.tx_indexes.value());
    Ok(())
}