Struct JsonLinesWriter

Source
pub struct JsonLinesWriter<W> { /* private fields */ }
Expand description

A structure for writing JSON values as JSON Lines.

A JsonLinesWriter wraps a std::io::Write instance and writes serde::Serialize values to it by serializing each one as a single line of JSON and appending a newline.

§Example

use serde::Serialize;
use serde_jsonlines::JsonLinesWriter;
use std::fs::{read_to_string, File};

#[derive(Serialize)]
pub struct Structure {
    pub name: String,
    pub size: i32,
    pub on: bool,
}

fn main() -> std::io::Result<()> {
    {
        let fp = File::create("example.jsonl")?;
        let mut writer = JsonLinesWriter::new(fp);
        writer.write_all([
            Structure {
                name: "Foo Bar".into(),
                size: 42,
                on: true,
            },
            Structure {
                name: "Quux".into(),
                size: 23,
                on: false,
            },
            Structure {
                name: "Gnusto Cleesh".into(),
                size: 17,
                on: true,
            },
        ])?;
        writer.flush()?;
    }
    // End the block to close the writer
    assert_eq!(
        read_to_string("example.jsonl")?,
        concat!(
            "{\"name\":\"Foo Bar\",\"size\":42,\"on\":true}\n",
            "{\"name\":\"Quux\",\"size\":23,\"on\":false}\n",
            "{\"name\":\"Gnusto Cleesh\",\"size\":17,\"on\":true}\n",
        )
    );
    Ok(())
}

Implementations§

Source§

impl<W> JsonLinesWriter<W>

Source

pub fn new(writer: W) -> Self

Construct a new JsonLinesWriter from a std::io::Write instance

Source

pub fn into_inner(self) -> W

Consume the JsonLinesWriter and return the underlying writer

Source

pub fn get_ref(&self) -> &W

Get a reference to the underlying writer

Source

pub fn get_mut(&mut self) -> &mut W

Get a mutable reference to the underlying writer

Source§

impl<W: Write> JsonLinesWriter<W>

Source

pub fn write<T>(&mut self, value: &T) -> Result<()>
where T: ?Sized + Serialize,

Serialize a value as a line of JSON and write it to the underlying writer, followed by a newline.

Note that separate calls to this method may write different types of values.

§Errors

Has the same error conditions as serde_json::to_writer() and std::io::Write::write_all().

Source

pub fn write_all<T, I>(&mut self, items: I) -> Result<()>
where I: IntoIterator<Item = T>, T: Serialize,

Serialize each item in an iterator as a line of JSON, and write out each one followed by a newline to the underlying writer.

All values in a single call to write_all() must be the same type, but separate calls may write different types.

§Errors

Has the same error conditions as write().

Source

pub fn flush(&mut self) -> Result<()>

Flush the underlying writer.

Neither write() nor write_all() flush the writer, so you must explicitly call this method if you need output flushed.

§Errors

Has the same error conditions as std::io::Write::flush().

Trait Implementations§

Source§

impl<W: Clone> Clone for JsonLinesWriter<W>

Source§

fn clone(&self) -> JsonLinesWriter<W>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<W: Debug> Debug for JsonLinesWriter<W>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<W: PartialEq> PartialEq for JsonLinesWriter<W>

Source§

fn eq(&self, other: &JsonLinesWriter<W>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<W: Eq> Eq for JsonLinesWriter<W>

Source§

impl<W> StructuralPartialEq for JsonLinesWriter<W>

Auto Trait Implementations§

§

impl<W> Freeze for JsonLinesWriter<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for JsonLinesWriter<W>
where W: RefUnwindSafe,

§

impl<W> Send for JsonLinesWriter<W>
where W: Send,

§

impl<W> Sync for JsonLinesWriter<W>
where W: Sync,

§

impl<W> Unpin for JsonLinesWriter<W>
where W: Unpin,

§

impl<W> UnwindSafe for JsonLinesWriter<W>
where W: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.