pub struct SliceStreamProducer<P>where
P: BulkProducer<Item = u8>,{ /* private fields */ }Expand description
A BulkProducer<Item=u8> produced by a DropDecoder, which produces the verifiable slice stream for one contiguous slice of the payload of one AuthorisedEntry decoded from the Willow Drop Format.
§Warning
Any SliceStreamProducer produced by a DropDecoder must be completely consumed, emitting its Final value in order for further calls to DropDecoder::produce to make progress.
Trait Implementations§
Source§impl<P> BulkProducer for SliceStreamProducer<P>where
P: BulkProducer<Item = u8>,
impl<P> BulkProducer for SliceStreamProducer<P>where
P: BulkProducer<Item = u8>,
Source§impl<P> Producer for SliceStreamProducer<P>where
P: BulkProducer<Item = u8>,
impl<P> Producer for SliceStreamProducer<P>where
P: BulkProducer<Item = u8>,
Source§type Item = <P as Producer>::Item
type Item = <P as Producer>::Item
The sequence produced by this producer starts with arbitrarily many values of this type.
Source§type Final = ()
type Final = ()
The sequence produced by this producer ends with up to one value of this type.
Source§type Error = DecodeError<(), <P as Producer>::Error, Blame>
type Error = DecodeError<(), <P as Producer>::Error, Blame>
The type of errors the producer can emit instead of doing its job.
Auto Trait Implementations§
impl<P> !RefUnwindSafe for SliceStreamProducer<P>
impl<P> !Send for SliceStreamProducer<P>
impl<P> !Sync for SliceStreamProducer<P>
impl<P> !UnwindSafe for SliceStreamProducer<P>
impl<P> Freeze for SliceStreamProducer<P>
impl<P> Unpin for SliceStreamProducer<P>
impl<P> UnsafeUnpin for SliceStreamProducer<P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<P> BulkProducerExt for Pwhere
P: BulkProducer + ?Sized,
impl<P> BulkProducerExt for Pwhere
P: BulkProducer + ?Sized,
Source§async fn expose_items<F, R>(
&mut self,
f: F,
) -> Result<Either<R, Self::Final>, Self::Error>
async fn expose_items<F, R>( &mut self, f: F, ) -> Result<Either<R, Self::Final>, Self::Error>
Behaves exactly like
BulkProducer::expose_items_gracefully, except that the provided function is not returned alongside error or final values for simplicity. Read moreSource§async fn expose_items_sync<F, R>(
&mut self,
f: F,
) -> Result<Either<R, Self::Final>, Self::Error>
async fn expose_items_sync<F, R>( &mut self, f: F, ) -> Result<Either<R, Self::Final>, Self::Error>
Behaves exactly like
BulkProducerExt::expose_items, except the function argument is not async. Read moreSource§async fn bulk_produce(
&mut self,
buf: &mut [Self::Item],
) -> Result<Either<usize, Self::Final>, Self::Error>
async fn bulk_produce( &mut self, buf: &mut [Self::Item], ) -> Result<Either<usize, Self::Final>, Self::Error>
Calls
self.expose_items, clones the exposed items into buf, and returns how many items where written there. Alternatively, forwards any final value or error. This method is mostly analogous to std::io::Read::read. Read moreSource§async fn bulk_overwrite_full_slice(
&mut self,
buf: &mut [Self::Item],
) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
async fn bulk_overwrite_full_slice( &mut self, buf: &mut [Self::Item], ) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
Tries to completely overwrite a slice with items from a bulk producer.
Reports an error if the slice could not be overwritten completely. Read more
Source§async fn skip(
&mut self,
amount: usize,
) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
async fn skip( &mut self, amount: usize, ) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
Produces and drops
amount many items.
Reports an error if the producer yielded fewer than amount many items. Read moreSource§fn to_bulk_buffered<Q>(
self,
queue: Q,
) -> BulkBuffered<Self, Self::Final, Self::Error, Q>where
Self: Sized,
fn to_bulk_buffered<Q>(
self,
queue: Q,
) -> BulkBuffered<Self, Self::Final, Self::Error, Q>where
Self: Sized,
Turns
self into a buffered bulk producer. Read moreSource§async fn peek<F, R>(
&mut self,
f: F,
) -> Result<Either<R, Self::Final>, Self::Error>where
F: AsyncFnOnce(&Self::Item) -> R,
async fn peek<F, R>(
&mut self,
f: F,
) -> Result<Either<R, Self::Final>, Self::Error>where
F: AsyncFnOnce(&Self::Item) -> R,
Calls the given async function with a reference to the next item that would be produced, but without actually producing it. Read more
Source§async fn peek_sync<F, R>(
&mut self,
f: F,
) -> Result<Either<R, Self::Final>, Self::Error>
async fn peek_sync<F, R>( &mut self, f: F, ) -> Result<Either<R, Self::Final>, Self::Error>
Behaves exactly like
BulkProducerExt::peek, except the function argument is not async. Read moreSource§async fn produce_decoded<T>(
&mut self,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as Decodable<Self::Item>>::ErrorReason>>
async fn produce_decoded<T>( &mut self, ) -> Result<T, DecodeError<Self::Final, Self::Error, <T as Decodable<Self::Item>>::ErrorReason>>
Source§async fn produce_decoded_canonic<T>(
&mut self,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as DecodableCanonic<Self::Item>>::ErrorCanonic>>where
T: DecodableCanonic<Self::Item>,
async fn produce_decoded_canonic<T>(
&mut self,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as DecodableCanonic<Self::Item>>::ErrorCanonic>>where
T: DecodableCanonic<Self::Item>,
Source§async fn produce_relative_decoded<T, RelativeTo>(
&mut self,
rel: &RelativeTo,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as RelativeDecodable<RelativeTo, Self::Item>>::ErrorReason>>where
T: RelativeDecodable<RelativeTo, Self::Item>,
async fn produce_relative_decoded<T, RelativeTo>(
&mut self,
rel: &RelativeTo,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as RelativeDecodable<RelativeTo, Self::Item>>::ErrorReason>>where
T: RelativeDecodable<RelativeTo, Self::Item>,
Source§async fn produce_relative_decoded_canonic<T, RelativeTo>(
&mut self,
rel: &RelativeTo,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as RelativeDecodableCanonic<RelativeTo, Self::Item>>::ErrorCanonic>>where
T: RelativeDecodableCanonic<RelativeTo, Self::Item>,
async fn produce_relative_decoded_canonic<T, RelativeTo>(
&mut self,
rel: &RelativeTo,
) -> Result<T, DecodeError<Self::Final, Self::Error, <T as RelativeDecodableCanonic<RelativeTo, Self::Item>>::ErrorCanonic>>where
T: RelativeDecodableCanonic<RelativeTo, Self::Item>,
Source§async fn decode_u16_be(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u16_be(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u32_be(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u32_be(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u64_be(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u64_be(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u128_be(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u128_be(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i16_be(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i16_be(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i32_be(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i32_be(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i64_be(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i64_be(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i128_be(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i128_be(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u16_le(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u16_le(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u32_le(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u32_le(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u64_le(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u64_le(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u128_le(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_u128_le(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i16_le(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i16_le(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i32_le(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i32_le(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i64_le(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i64_le(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i128_le(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
async fn decode_i128_le(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, !>>where
Self: BulkProducer<Item = u8>,
impl<P> IntoBulkProducer for P
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<P> IntoProducer for Pwhere
P: Producer,
impl<P> IntoProducer for Pwhere
P: Producer,
Source§type IntoProducer = P
type IntoProducer = P
The producer into which values of this type can be converted. Read more
Source§fn into_producer(self) -> P
fn into_producer(self) -> P
Creates a producer from a value. Read more
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<P> ProducerExt for P
impl<P> ProducerExt for P
Source§async fn produce_item(
&mut self,
) -> Result<Self::Item, ProduceAtLeastError<Self::Final, Self::Error>>
async fn produce_item( &mut self, ) -> Result<Self::Item, ProduceAtLeastError<Self::Final, Self::Error>>
Tries to produce a regular item, and reports an error if the final value was produced instead. Read more
Source§async fn produce_final(
&mut self,
) -> Result<Self::Final, ExpectedFinalError<Self::Item, Self::Error>>
async fn produce_final( &mut self, ) -> Result<Self::Final, ExpectedFinalError<Self::Item, Self::Error>>
Tries to produce a final value, and reports an error if a normal item was produced instead. Read more
Source§async fn overwrite_full_slice(
&mut self,
buf: &mut [Self::Item],
) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
async fn overwrite_full_slice( &mut self, buf: &mut [Self::Item], ) -> Result<(), ProduceAtLeastError<Self::Final, Self::Error>>
Tries to completely overwrite a slice with items from a producer.
Reports an error if the slice could not be overwritten completely. Read more
Source§fn to_buffered<Q>(self, queue: Q) -> Buffered<Self, Self::Final, Self::Error, Q>where
Self: Sized,
fn to_buffered<Q>(self, queue: Q) -> Buffered<Self, Self::Final, Self::Error, Q>where
Self: Sized,
Turns
self into a buffered bulk producer. Read moreSource§fn to_map_error<Fun, NewErr>(self, fun: Fun) -> MapError<Self, Fun>
fn to_map_error<Fun, NewErr>(self, fun: Fun) -> MapError<Self, Fun>
Turns
self into a producer that maps any error emitted by self through the given function. Read moreSource§fn to_map_async_error<Fun, NewErr>(self, fun: Fun) -> MapAsyncError<Self, Fun>
fn to_map_async_error<Fun, NewErr>(self, fun: Fun) -> MapAsyncError<Self, Fun>
Turns
self into a producer that maps any error emitted by self through the given async function. Read moreSource§fn to_map_final<Fun, NewFin>(self, fun: Fun) -> MapFinal<Self, Fun>
fn to_map_final<Fun, NewFin>(self, fun: Fun) -> MapFinal<Self, Fun>
Turns
self into a producer that maps any final value emitted by self through the given function. Read moreSource§fn to_map_async_final<Fun, NewFin>(self, fun: Fun) -> MapAsyncFinal<Self, Fun>
fn to_map_async_final<Fun, NewFin>(self, fun: Fun) -> MapAsyncFinal<Self, Fun>
Turns
self into a producer that maps any final value emitted by self through the given async function. Read moreSource§fn to_map_item<Fun, NewItem>(self, fun: Fun) -> MapItem<Self, Fun>
fn to_map_item<Fun, NewItem>(self, fun: Fun) -> MapItem<Self, Fun>
Source§fn to_map_async_item<Fun, NewItem>(self, fun: Fun) -> MapAsyncItem<Self, Fun>
fn to_map_async_item<Fun, NewItem>(self, fun: Fun) -> MapAsyncItem<Self, Fun>
Turns
self into a producer that maps any item emitted by self through the given async function. Read moreSource§fn to_filter<P>(self, predicate: P) -> Filter<Self, P>
fn to_filter<P>(self, predicate: P) -> Filter<Self, P>
Turns
self into a producer which only produces items for which the given predicate returns true. Read moreSource§fn to_produce_while<P>(self, predicate: P) -> ProduceWhile<Self, P>
fn to_produce_while<P>(self, predicate: P) -> ProduceWhile<Self, P>
Source§fn to_limit(self, limit: usize) -> Limit<Self>where
Self: Sized,
fn to_limit(self, limit: usize) -> Limit<Self>where
Self: Sized,
Turns
self into a producer that emits at most limit items.
After producing limit items, the next call to produce yeilds a ProduceLimitError. Read more