Skip to main content

AbxWriter

Struct AbxWriter 

Source
pub struct AbxWriter<W: Write> { /* private fields */ }
Expand description

Encodes Events as ABX to any Write sink.

Tag and attribute names are interned, attribute values are not. Events are written as given: the writer does not check that tags are balanced. Writes are small and frequent, so wrap files and sockets in a BufWriter.

§Examples

use android_abx::{AbxParser, AbxWriter, Attribute, AttributeValue, Event};

let mut writer = AbxWriter::new(Vec::new())?;
writer.write_event(&Event::StartDocument)?;
writer.write_event(&Event::StartTag {
    name: "pkg".into(),
    attributes: vec![Attribute {
        name: "version".into(),
        value: AttributeValue::Int(3),
    }],
})?;
writer.write_event(&Event::EndTag { name: "pkg".into() })?;
writer.write_event(&Event::EndDocument)?;
let data = writer.into_inner();

let xml = AbxParser::new(&data)?.to_xml()?;
assert!(xml.ends_with(r#"<pkg version="3"></pkg>"#));

Implementations§

Source§

impl<W: Write> AbxWriter<W>

Source

pub fn new(writer: W) -> Result<Self>

Creates a writer and writes the header.

§Errors

Returns AbxError::Io if writing fails.

Source

pub fn write_event(&mut self, ev: &Event) -> Result<()>

Encodes and writes one event.

§Errors

Returns AbxError::ValueTooLong if a string or byte value is longer than 65,535 bytes, or AbxError::Io if writing fails. After an error, the output is incomplete and should be discarded.

Source

pub fn into_inner(self) -> W

Returns the underlying writer, without flushing it.

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<W> UnsafeUnpin for AbxWriter<W>
where W: UnsafeUnpin,

§

impl<W> UnwindSafe for AbxWriter<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 = !

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

fn try_from(value: U) -> Result<T, !>

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.