pub trait TendrilSink<F, A = NonAtomic>where
    F: Format,
    A: Atomicity,{
    type Output;

    // Required methods
    fn process(&mut self, t: Tendril<F, A>);
    fn error(&mut self, desc: Cow<'static, str>);
    fn finish(self) -> Self::Output;

    // Provided methods
    fn one<T>(self, t: T) -> Self::Output
       where Self: Sized,
             T: Into<Tendril<F, A>> { ... }
    fn from_iter<I>(self, i: I) -> Self::Output
       where Self: Sized,
             I: IntoIterator,
             I::Item: Into<Tendril<F, A>> { ... }
    fn read_from<R>(self, r: &mut R) -> Result<Self::Output>
       where Self: Sized,
             R: Read,
             F: SliceFormat<Slice = [u8]> { ... }
    fn from_file<P>(self, path: P) -> Result<Self::Output>
       where Self: Sized,
             P: AsRef<Path>,
             F: SliceFormat<Slice = [u8]> { ... }
}
Expand description

Trait for types that can process a tendril.

This is a “push” interface, unlike the “pull” interface of Iterator<Item=Tendril<F>>. The push interface matches html5ever and other incremental parsers with a similar architecture.

Required Associated Types§

source

type Output

What the overall result of processing is.

Required Methods§

source

fn process(&mut self, t: Tendril<F, A>)

Process this tendril.

source

fn error(&mut self, desc: Cow<'static, str>)

Indicates that an error has occurred.

source

fn finish(self) -> Self::Output

Indicates the end of the stream.

Provided Methods§

source

fn one<T>(self, t: T) -> Self::Outputwhere Self: Sized, T: Into<Tendril<F, A>>,

Process one tendril and finish.

source

fn from_iter<I>(self, i: I) -> Self::Outputwhere Self: Sized, I: IntoIterator, I::Item: Into<Tendril<F, A>>,

Consume an iterator of tendrils, processing each item, then finish.

source

fn read_from<R>(self, r: &mut R) -> Result<Self::Output>where Self: Sized, R: Read, F: SliceFormat<Slice = [u8]>,

Read from the given stream of bytes until exhaustion and process incrementally, then finish. Return Err at the first I/O error.

source

fn from_file<P>(self, path: P) -> Result<Self::Output>where Self: Sized, P: AsRef<Path>, F: SliceFormat<Slice = [u8]>,

Read from the file at the given path and process incrementally, then finish. Return Err at the first I/O error.

Implementors§

source§

impl<Sink, A> TendrilSink<Bytes, A> for LossyDecoder<Sink, A>where Sink: TendrilSink<UTF8, A>, A: Atomicity,

§

type Output = <Sink as TendrilSink<UTF8, A>>::Output

source§

impl<Sink, A> TendrilSink<Bytes, A> for Utf8LossyDecoder<Sink, A>where Sink: TendrilSink<UTF8, A>, A: Atomicity,

§

type Output = <Sink as TendrilSink<UTF8, A>>::Output