pub struct MapErr<P, Fun> { /* private fields */ }Expand description
A bulk producer wrapper which changes the error (type) of the wrapped producer, by passing errors through a function.
Use the AsRef<P> impl to access the wrapped producer.
Created via [ProducerExt::map_err].
Counterpart: the [consumer::MapErr] type.
Implementations§
Source§impl<P, Fun> MapErr<P, Fun>
impl<P, Fun> MapErr<P, Fun>
Sourcepub fn into_inner(self) -> P
pub fn into_inner(self) -> P
Consumes self and returns the wrapped producer.
Trait Implementations§
Source§impl<P, Fun, OldErr, NewErr> BulkProducer for MapErr<P, Fun>where
P: BulkProducer<Error = OldErr>,
Fun: FnOnce(OldErr) -> NewErr,
impl<P, Fun, OldErr, NewErr> BulkProducer for MapErr<P, Fun>where
P: BulkProducer<Error = OldErr>,
Fun: FnOnce(OldErr) -> NewErr,
Source§impl<P, Fun, OldErr, NewErr> Producer for MapErr<P, Fun>
impl<P, Fun, OldErr, NewErr> Producer for MapErr<P, Fun>
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 = <P as Producer>::Final
type Final = <P as Producer>::Final
The sequence produced by this producer ends with up to one value of this type.
Auto Trait Implementations§
impl<P, Fun> Freeze for MapErr<P, Fun>
impl<P, Fun> RefUnwindSafe for MapErr<P, Fun>where
P: RefUnwindSafe,
Fun: RefUnwindSafe,
impl<P, Fun> Send for MapErr<P, Fun>
impl<P, Fun> Sync for MapErr<P, Fun>
impl<P, Fun> Unpin for MapErr<P, Fun>
impl<P, Fun> UnwindSafe for MapErr<P, Fun>where
P: UnwindSafe,
Fun: UnwindSafe,
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_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
BulkProducer::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§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§fn to_bulk_scrambled<Q>(
self,
buffer: Q,
ops: Vec<BulkProducerOperation>,
) -> BulkScrambled<Self, Q, Self::Final, Self::Error>where
Self: Sized,
fn to_bulk_scrambled<Q>(
self,
buffer: Q,
ops: Vec<BulkProducerOperation>,
) -> BulkScrambled<Self, Q, Self::Final, Self::Error>where
Self: Sized,
Source§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, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u16_be(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u32_be(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u32_be(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u64_be(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u64_be(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u128_be(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u128_be(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i16_be(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i16_be(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i32_be(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i32_be(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i64_be(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i64_be(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i128_be(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i128_be(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u16_le(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u16_le(
&mut self,
) -> Result<u16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u32_le(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u32_le(
&mut self,
) -> Result<u32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u64_le(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u64_le(
&mut self,
) -> Result<u64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_u128_le(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_u128_le(
&mut self,
) -> Result<u128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i16_le(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i16_le(
&mut self,
) -> Result<i16, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i32_le(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i32_le(
&mut self,
) -> Result<i32, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i64_le(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i64_le(
&mut self,
) -> Result<i64, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
Source§async fn decode_i128_le(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
async fn decode_i128_le(
&mut self,
) -> Result<i128, DecodeError<Self::Final, Self::Error, Infallible>>where
Self: BulkProducer<Item = u8>,
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<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_scrambled<Q>(
self,
buffer: Q,
ops: Vec<ProducerOperation>,
) -> Scrambled<Self, Q, Self::Final, Self::Error>where
Self: Sized,
fn to_scrambled<Q>(
self,
buffer: Q,
ops: Vec<ProducerOperation>,
) -> Scrambled<Self, Q, Self::Final, Self::Error>where
Self: Sized,
Source§async fn equals<P>(&mut self, other: &mut P) -> bool
async fn equals<P>(&mut self, other: &mut P) -> bool
Returns whether this producer and another producer emit equal sequences of items. Read more
Source§async fn equals_dbg<P>(&mut self, other: &mut P) -> bool
async fn equals_dbg<P>(&mut self, other: &mut P) -> bool
Exactly the same as
ProducerExt::equals but also logs the return values of all produce calls to the terminal. Requires the dev feature.