statsig_rust/
statsig_core_api_options.rs

1use serde::{Deserialize, Serialize};
2
3pub enum AnyEvaluationOptions {
4    FeatureGateEvaluationOptions(FeatureGateEvaluationOptions),
5    DynamicConfigEvaluationOptions(DynamicConfigEvaluationOptions),
6    ExperimentEvaluationOptions(ExperimentEvaluationOptions),
7    LayerEvaluationOptions(LayerEvaluationOptions),
8    ParameterStoreEvaluationOptions(ParameterStoreEvaluationOptions),
9}
10
11#[derive(Debug, Clone, Default, Deserialize)]
12pub struct FeatureGateEvaluationOptions {
13    #[serde(default)]
14    pub disable_exposure_logging: bool,
15}
16
17#[derive(Debug, Clone, Default, Deserialize)]
18pub struct DynamicConfigEvaluationOptions {
19    #[serde(default)]
20    pub disable_exposure_logging: bool,
21}
22
23#[derive(Debug, Clone, Default, Deserialize)]
24pub struct ExperimentEvaluationOptions {
25    #[serde(default)]
26    pub disable_exposure_logging: bool,
27}
28
29#[derive(Debug, Clone, Default, Deserialize)]
30pub struct LayerEvaluationOptions {
31    #[serde(default)]
32    pub disable_exposure_logging: bool,
33}
34
35#[derive(Debug, Clone, Default, Deserialize, Serialize, Copy)]
36pub struct ParameterStoreEvaluationOptions {
37    #[serde(default)]
38    pub disable_exposure_logging: bool,
39}
40
41// -------------------------
42//   From implementations into ParameterStoreEvaluationOptions
43// -------------------------
44
45impl From<ParameterStoreEvaluationOptions> for FeatureGateEvaluationOptions {
46    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
47        FeatureGateEvaluationOptions {
48            disable_exposure_logging: opts.disable_exposure_logging,
49        }
50    }
51}
52
53impl From<ParameterStoreEvaluationOptions> for DynamicConfigEvaluationOptions {
54    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
55        DynamicConfigEvaluationOptions {
56            disable_exposure_logging: opts.disable_exposure_logging,
57        }
58    }
59}
60
61impl From<ParameterStoreEvaluationOptions> for ExperimentEvaluationOptions {
62    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
63        ExperimentEvaluationOptions {
64            disable_exposure_logging: opts.disable_exposure_logging,
65        }
66    }
67}
68
69impl From<ParameterStoreEvaluationOptions> for LayerEvaluationOptions {
70    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
71        LayerEvaluationOptions {
72            disable_exposure_logging: opts.disable_exposure_logging,
73        }
74    }
75}