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