Writer

Struct Writer 

Source
pub struct Writer<'a, W> { /* private fields */ }
Expand description

The Writer is the primary interface for writing values to an avro datafile or a byte container (say a Vec<u8>). It takes a reference to the schema for validating the values being written and an output stream W which can be any type implementing the Write trait.

Implementations§

Source§

impl<'a, W: Write> Writer<'a, W>

Source

pub fn new(schema: &'a Schema, out_stream: W) -> Result<Self, AvrowErr>

Creates a new avro Writer instance taking a reference to a Schema and a type implementing Write.

Source

pub fn with_codec( schema: &'a Schema, out_stream: W, codec: Codec, ) -> Result<Self, AvrowErr>

Same as the new method, but additionally takes a Codec as parameter. Codecs can be used to compress the encoded data being written in an avro datafile. Supported codecs as per spec are:

  • null (default): No compression is applied.
  • snappy (--features snappy)
  • deflate (--features deflate)
  • zstd compression (--feature zstd)
  • bzip compression (--feature bzip)
  • xz compression (--features xz)
Source

pub fn write<T: Into<Value>>(&mut self, value: T) -> Result<(), AvrowErr>

Appends a value to the buffer. Before a value gets written, it gets validated with the schema referenced by this writer.

§Note:

writes are buffered internally as per the flush interval (for performance) and the underlying buffer may not reflect values immediately. Call flush to explicitly write all buffered data. Alternatively calling into_inner on the writer guarantees that flush will happen and will hand over the underlying buffer with all data written.

Source

pub fn serialize<T: Serialize>(&mut self, value: T) -> Result<(), AvrowErr>

Appends a native Rust value to the buffer. The value must implement Serde’s Serialize trait.

Source

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

Sync/flush any buffered data to the underlying buffer.

Source

pub fn into_inner(self) -> Result<W, AvrowErr>

Consumes self and yields the inner Write instance. Additionally calls flush if no flush has happened before this call.

Auto Trait Implementations§

§

impl<'a, W> Freeze for Writer<'a, W>
where W: Freeze,

§

impl<'a, W> RefUnwindSafe for Writer<'a, W>
where W: RefUnwindSafe,

§

impl<'a, W> Send for Writer<'a, W>
where W: Send,

§

impl<'a, W> Sync for Writer<'a, W>
where W: Sync,

§

impl<'a, W> Unpin for Writer<'a, W>
where W: Unpin,

§

impl<'a, W> UnwindSafe for Writer<'a, 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> 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, 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.