1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// =============================================================================
// Copyright (c) 2025 - 2026 Haixing Hu.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0.
// =============================================================================
//! Defines errors produced by time-domain operations.
use Duration;
use Error;
use TimerUnavailableError;
use crateClockDomain;
/// Describes an invalid monotonic-time operation.
///
/// Callers must include a wildcard arm when matching this enum so future
/// versions can add errors without breaking downstream code:
///
/// ```
/// use qubit_clock::TimeError;
///
/// fn message(error: TimeError) -> &'static str {
/// match error {
/// TimeError::ClockDomainMismatch { .. } => "domain mismatch",
/// TimeError::InstantOverflow => "overflow",
/// TimeError::CannotMoveBackward { .. } => "backward move",
/// TimeError::InvalidInstantOrder { .. } => "invalid order",
/// TimeError::TimerUnavailable { .. } => "timer unavailable",
/// _ => "other time error",
/// }
/// }
///
/// assert_eq!("overflow", message(TimeError::InstantOverflow));
/// ```
///
/// An exhaustive match is rejected outside this crate because additional
/// variants may be introduced in a compatible release:
///
/// ```compile_fail
/// use qubit_clock::TimeError;
///
/// fn exhaustive_message(error: TimeError) -> &'static str {
/// match error {
/// TimeError::ClockDomainMismatch { .. } => "domain mismatch",
/// TimeError::InstantOverflow => "overflow",
/// TimeError::CannotMoveBackward { .. } => "backward move",
/// TimeError::InvalidInstantOrder { .. } => "invalid order",
/// TimeError::TimerUnavailable { .. } => "timer unavailable",
/// }
/// }
/// ```