AsyncJsonLinesWriter

Struct AsyncJsonLinesWriter 

Source
pub struct AsyncJsonLinesWriter<W> { /* private fields */ }
Available on crate feature async only.
Expand description

A structure for asynchronously writing JSON values as JSON Lines.

An AsyncJsonLinesWriter wraps a tokio::io::AsyncWrite 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::AsyncJsonLinesWriter;
use tokio::fs::{read_to_string, File};

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

#[tokio::main]
async fn main() -> std::io::Result<()> {
    {
        let fp = File::create("example.jsonl").await?;
        let mut writer = AsyncJsonLinesWriter::new(fp);
        writer
            .write(&Structure {
                name: "Foo Bar".into(),
                size: 42,
                on: true,
            })
            .await?;
        writer
            .write(&Structure {
                name: "Quux".into(),
                size: 23,
                on: false,
            })
            .await?;
        writer
            .write(&Structure {
                name: "Gnusto Cleesh".into(),
                size: 17,
                on: true,
            })
            .await?;
        writer.flush().await?;
    }
    // End the block to close the writer
    assert_eq!(
        read_to_string("example.jsonl").await?,
        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> AsyncJsonLinesWriter<W>

Source

pub fn new(writer: W) -> Self

Construct a new AsyncJsonLinesWriter from a tokio::io::AsyncWrite instance

Source

pub fn into_inner(self) -> W

Consume the AsyncJsonLinesWriter 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

pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut W>

Get a pinned mutable reference to the underlying writer

Source

pub fn into_sink<T>(self) -> JsonLinesSink<W, T>

Consume the AsyncJsonLinesWriter and return an asynchronous sink for serializing values as JSON and writing them to the underlying writer.

The returned sink consumes T values and has an Error type of std::io::Error. Each call to send() has the same error conditions as write().

Note that all values sent to the sink must be of the same type. If you wish to write values of varying types, use the write() method.

Source§

impl<W: AsyncWrite> AsyncJsonLinesWriter<W>

Source

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

Serialize a value as a line of JSON and write it asynchronously 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 tokio::io::AsyncWriteExt::write_all().

Source

pub async fn flush(&mut self) -> Result<()>
where W: Unpin,

Flush the underlying writer.

write() does not flush the writer, so you must explicitly call this method if you need output flushed.

§Errors

Has the same error conditions as tokio::io::AsyncWriteExt::flush().

Trait Implementations§

Source§

impl<W: Clone> Clone for AsyncJsonLinesWriter<W>

Source§

fn clone(&self) -> AsyncJsonLinesWriter<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 AsyncJsonLinesWriter<W>

Source§

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

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

impl<W: PartialEq> PartialEq for AsyncJsonLinesWriter<W>

Source§

fn eq(&self, other: &AsyncJsonLinesWriter<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 AsyncJsonLinesWriter<W>

Source§

impl<W> StructuralPartialEq for AsyncJsonLinesWriter<W>

Source§

impl<'__pin, W> Unpin for AsyncJsonLinesWriter<W>
where __Origin<'__pin, W>: Unpin,

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

impl<W> UnwindSafe for AsyncJsonLinesWriter<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.