#![doc = include_str!("../README.md")]
mod char_locations;
mod de;
mod key_value_pair_stream;
mod key_value_pair_writer;
mod location;
#[cfg(test)]
mod tests;
mod tokenizer;
mod value_stream;
mod value_writer;
use serde::{Deserialize, Serialize};
use crate::location::Location;
pub use key_value_pair_stream::KeyValuePairStream;
pub use key_value_pair_writer::KeyValuePairWriter;
pub use tokenizer::{ErrKind, Error};
pub use value_stream::ValueStream;
pub use value_writer::ValueWriter;
pub fn from_value_stream<T, CharsStream, PassThroughError>(
stream: CharsStream,
) -> ValueStream<T, CharsStream, PassThroughError>
where
T: for<'de> Deserialize<'de>,
CharsStream: IntoIterator<Item = Result<char, PassThroughError>>,
PassThroughError: std::error::Error,
{
ValueStream::new(stream)
}
pub fn from_key_value_pair_stream<T, CharsStream, PassThroughError>(
stream: CharsStream,
) -> KeyValuePairStream<T, CharsStream, PassThroughError>
where
T: for<'de> Deserialize<'de>,
CharsStream: IntoIterator<Item = Result<char, PassThroughError>>,
PassThroughError: std::error::Error,
{
KeyValuePairStream::new(stream)
}
pub fn values_to_json_stream<Iter>(values: Iter) -> ValueWriter<Iter>
where
Iter: IntoIterator,
Iter::Item: Serialize,
{
ValueWriter::new(values)
}
pub fn key_value_pairs_to_json_stream<T, Iter>(values: Iter) -> KeyValuePairWriter<T, Iter>
where
Iter: IntoIterator<Item = (String, T)>,
T: Serialize,
{
KeyValuePairWriter::new(values)
}