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