use serde::Serialize;
use crate::error::Result;
pub fn to_line<T: Serialize>(value: &T) -> Result<String> {
Ok(serde_json::to_string(value)?)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn to_line_is_single_line() {
let line = to_line(&serde_json::json!({"a": 1, "b": [1, 2]})).unwrap();
assert!(!line.contains('\n'));
}
#[test]
fn lines_join_into_newline_delimited_stream() {
let a = to_line(&serde_json::json!({"n": 1})).unwrap();
let b = to_line(&serde_json::json!({"n": 2})).unwrap();
let stream = format!("{a}\n{b}\n");
assert_eq!(stream.lines().count(), 2);
for l in stream.lines() {
let _: serde_json::Value = serde_json::from_str(l).unwrap();
}
}
}