qubit_progress/error/
start_error.rs1use std::error::Error;
12use std::fmt;
13
14use crate::error::ConfigurationError;
15use crate::error::DeliveryError;
16use crate::error::EmissionError;
17
18#[derive(Clone, Debug)]
20#[non_exhaustive]
21pub enum StartError {
22 InvalidConfiguration(ConfigurationError),
24 OperationIdExhausted,
26 Delivery(DeliveryError),
28}
29
30impl fmt::Display for StartError {
31 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
33 match self {
34 Self::InvalidConfiguration(error) => error.fmt(formatter),
35 Self::OperationIdExhausted => {
36 formatter.write_str("progress operation IDs are exhausted")
37 }
38 Self::Delivery(error) => error.fmt(formatter),
39 }
40 }
41}
42
43impl Error for StartError {
44 fn source(&self) -> Option<&(dyn Error + 'static)> {
46 match self {
47 Self::InvalidConfiguration(error) => Some(error),
48 Self::OperationIdExhausted => None,
49 Self::Delivery(error) => Some(error),
50 }
51 }
52}
53
54impl From<ConfigurationError> for StartError {
55 fn from(error: ConfigurationError) -> Self {
57 Self::InvalidConfiguration(error)
58 }
59}
60
61impl From<EmissionError> for StartError {
62 fn from(error: EmissionError) -> Self {
64 match error {
65 EmissionError::Delivery(error) => Self::Delivery(error),
66 EmissionError::SequenceExhausted => Self::OperationIdExhausted,
67 }
68 }
69}