diff --git a/src/jnv.rs b/src/jnv.rs index 5440972..0463f72 100644 --- a/src/jnv.rs +++ b/src/jnv.rs @@ -36,17 +36,12 @@ mod keymap; /// An `anyhow::Result` wrapping a vector of `serde_json::Value`. On success, it contains the parsed /// JSON data. On failure, it contains an error detailing what went wrong during parsing. fn deserialize_json(json_str: &str, limit_length: Option) -> anyhow::Result> { - match limit_length { - Some(l) => Deserializer::from_str(json_str) - .into_iter::() - .take(l) - .map(|res| res.map_err(anyhow::Error::from)) - .collect::>>(), - None => Deserializer::from_str(json_str) - .into_iter::() - .map(|res| res.map_err(anyhow::Error::from)) - .collect::>>(), - } + let deserializer = Deserializer::from_str(json_str).into_iter::(); + let results = match limit_length { + Some(l) => deserializer.take(l).collect::, _>>(), + None => deserializer.collect::, _>>(), + }; + results.map_err(anyhow::Error::from) } fn run_jq(query: &str, json_stream: &[serde_json::Value]) -> anyhow::Result> {