mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-08-01 12:48:31 +00:00
34 lines
805 B
Rust
34 lines
805 B
Rust
use futures::{Stream, StreamExt, TryStream, future::ready};
|
|
|
|
use crate::{Error, Result};
|
|
|
|
pub trait TryIgnore<'a, Item> {
|
|
fn ignore_err(self) -> impl Stream<Item = Item> + Send + 'a;
|
|
|
|
fn ignore_ok(self) -> impl Stream<Item = Error> + Send + 'a;
|
|
}
|
|
|
|
impl<'a, T, Item> TryIgnore<'a, Item> for T
|
|
where
|
|
T: Stream<Item = Result<Item>> + TryStream + Send + 'a,
|
|
Item: Send + 'a,
|
|
{
|
|
#[cfg(debug_assertions)]
|
|
#[inline]
|
|
fn ignore_err(self: T) -> impl Stream<Item = Item> + Send + 'a {
|
|
use super::TryExpect;
|
|
|
|
self.expect_ok()
|
|
}
|
|
|
|
#[cfg(not(debug_assertions))]
|
|
#[inline]
|
|
fn ignore_err(self: T) -> impl Stream<Item = Item> + Send + 'a {
|
|
self.filter_map(|res| ready(res.ok()))
|
|
}
|
|
|
|
#[inline]
|
|
fn ignore_ok(self: T) -> impl Stream<Item = Error> + Send + 'a {
|
|
self.filter_map(|res| ready(res.err()))
|
|
}
|
|
}
|