use crate::RaftTypeConfig;
use crate::TryAsRef;
use crate::errors::ForwardToLeader;
use crate::errors::QuorumNotEnough;
#[derive(Debug, Clone, thiserror::Error, derive_more::TryInto)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize), serde(bound = ""))]
pub enum LinearizableReadError<C>
where C: RaftTypeConfig
{
#[error(transparent)]
ForwardToLeader(#[from] ForwardToLeader<C>),
#[error(transparent)]
QuorumNotEnough(#[from] QuorumNotEnough<C>),
}
impl<C> TryAsRef<ForwardToLeader<C>> for LinearizableReadError<C>
where C: RaftTypeConfig
{
fn try_as_ref(&self) -> Option<&ForwardToLeader<C>> {
match self {
Self::ForwardToLeader(f) => Some(f),
_ => None,
}
}
}