use std::time::Duration;
mod ask;
mod tell;
#[cfg(feature = "remote")]
pub use ask::RemoteAskRequest;
#[cfg(feature = "remote")]
pub use tell::RemoteTellRequest;
pub use ask::{AskRequest, BlockingPendingReply, PendingReply, ReplyRecipientAskRequest};
pub use tell::{RecipientTellRequest, ReplyRecipientTellRequest, TellRequest};
#[derive(Clone, Copy, Debug, Default)]
pub struct WithoutRequestTimeout;
#[derive(Clone, Copy, Debug, Default)]
pub struct WithRequestTimeout(Option<Duration>);
#[derive(Clone, Copy, Debug)]
pub enum MaybeRequestTimeout {
NoTimeout,
Timeout(Duration),
}
impl From<Option<Duration>> for MaybeRequestTimeout {
fn from(timeout: Option<Duration>) -> Self {
match timeout {
Some(timeout) => MaybeRequestTimeout::Timeout(timeout),
None => MaybeRequestTimeout::NoTimeout,
}
}
}
impl From<WithoutRequestTimeout> for MaybeRequestTimeout {
fn from(_: WithoutRequestTimeout) -> Self {
MaybeRequestTimeout::NoTimeout
}
}
impl From<WithRequestTimeout> for MaybeRequestTimeout {
fn from(WithRequestTimeout(timeout): WithRequestTimeout) -> Self {
match timeout {
Some(timeout) => MaybeRequestTimeout::Timeout(timeout),
None => MaybeRequestTimeout::NoTimeout,
}
}
}
impl From<WithoutRequestTimeout> for Option<Duration> {
fn from(_: WithoutRequestTimeout) -> Self {
None
}
}
impl From<WithRequestTimeout> for Option<Duration> {
fn from(WithRequestTimeout(duration): WithRequestTimeout) -> Self {
duration
}
}
impl From<MaybeRequestTimeout> for Option<Duration> {
fn from(timeout: MaybeRequestTimeout) -> Self {
match timeout {
MaybeRequestTimeout::NoTimeout => None,
MaybeRequestTimeout::Timeout(duration) => Some(duration),
}
}
}