statsig_rust/
statsig_err.rs

1use std::fmt::{Display, Formatter};
2
3#[derive(Debug, Clone)]
4pub enum StatsigErr {
5    CustomError(String),
6
7    LockFailure(String),
8
9    UnstartedAdapter(String),
10
11    NetworkError(String),
12
13    SerializationError(String),
14
15    GzipError(String),
16
17    ZstdError(String),
18
19    JsonParseError(String, String),
20
21    FileError(String),
22
23    ThreadFailure(String),
24
25    StackOverflowError,
26
27    // DataStore
28    DataStoreFailure(String),
29
30    // Skip poll
31    SpecsAdapterSkipPoll(String),
32
33    ObservabilityClientFailure(String),
34
35    // ID Lists Adapter
36    IdListsAdapterFailedToInsertIdList,
37
38    GrpcError(String),
39
40    ShutdownTimeout,
41
42    // Task Scheduler
43    ScheduleFailure(String),
44    ShutdownFailure,
45}
46
47impl Display for StatsigErr {
48    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
49        match self {
50            StatsigErr::CustomError(msg) => write!(f, "{msg}"),
51
52            StatsigErr::LockFailure(msg) => write!(f, "Failed to acquire lock: {msg}"),
53
54            StatsigErr::UnstartedAdapter(msg) => write!(f, "Adapter not started: {msg}"),
55
56            StatsigErr::NetworkError(msg) => write!(f, "Network error: {msg}"),
57
58            StatsigErr::SerializationError(msg) => write!(f, "Serialization error: {msg}"),
59
60            StatsigErr::GzipError(msg) => write!(f, "Gzip error: {msg}"),
61
62            StatsigErr::ZstdError(msg) => write!(f, "Zstd error: {msg}"),
63
64            StatsigErr::JsonParseError(type_name, err_msg) => {
65                write!(f, "Failed to parse {type_name} - {err_msg}")
66            }
67
68            StatsigErr::FileError(msg) => write!(f, "File write error: {msg}"),
69
70            StatsigErr::ThreadFailure(msg) => write!(f, "Thread failure: {msg}"),
71
72            StatsigErr::StackOverflowError => write!(f, "Statsig Evaluation Depth Exceeded"),
73
74            // ID Lists
75            StatsigErr::IdListsAdapterFailedToInsertIdList => {
76                write!(f, "Failed to insert new Id List")
77            }
78
79            StatsigErr::GrpcError(e) => write!(f, "{e}"),
80
81            StatsigErr::ShutdownTimeout => write!(f, "Shutdown timed out"),
82
83            StatsigErr::ScheduleFailure(e) => write!(f, "Failed to schedule task: {e}"),
84
85            StatsigErr::ShutdownFailure => write!(f, "Failed to shutdown task scheduler"),
86            StatsigErr::DataStoreFailure(message) => write!(f, "DataStore Error: {message}"),
87            StatsigErr::SpecsAdapterSkipPoll(adapter_name) => {
88                write!(f, "{adapter_name} skips scheduling polling")
89            }
90            StatsigErr::ObservabilityClientFailure(message) => {
91                write!(f, "ObservabilityClient Error: {message}")
92            }
93        }
94    }
95}