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