1use std::error::Error as StdError;
2use std::fmt;
3
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8#[non_exhaustive]
9pub enum InsertPushRuleError {
10 #[error("rule IDs starting with a dot are reserved for server-default rules")]
12 ServerDefaultRuleId,
13
14 #[error("invalid rule ID")]
16 InvalidRuleId,
17
18 #[error("can't place rule relative to server-default rule")]
20 RelativeToServerDefaultRule,
21
22 #[error("The before or after rule could not be found")]
24 UnknownRuleId,
25
26 #[error("before has a higher priority than after")]
28 BeforeHigherThanAfter,
29}
30
31#[derive(Debug, Error)]
33#[non_exhaustive]
34#[error("The rule could not be found")]
35pub struct RuleNotFoundError;
36
37#[derive(Debug, Error)]
39#[non_exhaustive]
40pub enum RemovePushRuleError {
41 #[error("server-default rules cannot be removed")]
43 ServerDefault,
44
45 #[error("rule not found")]
47 NotFound,
48}
49
50#[derive(Debug)]
53pub struct MissingPatternError;
54
55impl fmt::Display for MissingPatternError {
56 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
57 write!(f, "Push rule does not have a pattern.")
58 }
59}
60
61impl StdError for MissingPatternError {}