Files
Notes/notes-service/vendor/futures-intrusive/src/channel/error.rs
T
2026-08-01 16:11:49 +03:00

73 lines
1.9 KiB
Rust

/// The error which is returned when sending a value into a channel fails.
///
/// The `send` operation can only fail if the channel has been closed, which
/// would prevent the other actors to ever retrieve the value.
///
/// The error recovers the value that has been sent.
#[derive(PartialEq, Debug)]
pub struct ChannelSendError<T>(pub T);
/// The error which is returned when trying to receive from a channel
/// without waiting fails.
#[derive(PartialEq, Debug, Copy, Clone)]
pub enum TryReceiveError {
/// The channel is empty. No value is available for reception.
Empty,
/// The channel had been closed and no more value is available for reception.
Closed,
}
impl TryReceiveError {
/// Returns whether the error is the `Empty` variant.
pub fn is_empty(self) -> bool {
match self {
Self::Empty => true,
_ => false,
}
}
/// Returns whether the error is the `Closed` variant.
pub fn is_closed(self) -> bool {
match self {
Self::Closed => true,
_ => false,
}
}
}
/// The error which is returned when trying to send on a channel
/// without waiting fails.
#[derive(PartialEq, Debug)]
pub enum TrySendError<T> {
/// The channel is full.
Full(T),
/// The channel was closed.
Closed(T),
}
impl<T> TrySendError<T> {
/// Converts the error into its inner value.
pub fn into_inner(self) -> T {
match self {
Self::Closed(inner) => inner,
Self::Full(inner) => inner,
}
}
/// Returns whether the error is the `WouldBlock` variant.
pub fn is_full(&self) -> bool {
match self {
Self::Full(_) => true,
_ => false,
}
}
/// Returns whether the error is the `Closed` variant.
pub fn is_closed(&self) -> bool {
match self {
Self::Closed(_) => true,
_ => false,
}
}
}