toasty_core/error/
transaction_timeout.rs

1use std::time::Duration;
2
3use crate::{error::ErrorKind, Error};
4
5#[derive(Debug)]
6pub(super) struct TransactionTimeout {
7    duration: Duration,
8}
9
10impl Error {
11    /// Returned when the transaction closure exceeds the configured timeout.
12    /// The transaction is automatically rolled back.
13    pub fn transaction_timeout(duration: Duration) -> Error {
14        ErrorKind::TransactionTimeout(TransactionTimeout { duration }).into()
15    }
16
17    /// Returns `true` if this error is a transaction timeout.
18    pub fn is_transaction_timeout(&self) -> bool {
19        matches!(self.kind(), ErrorKind::TransactionTimeout(_))
20    }
21}
22
23impl std::error::Error for TransactionTimeout {}
24
25impl core::fmt::Display for TransactionTimeout {
26    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27        write!(f, "Transaction timed out after {:?}", self.duration)
28    }
29}