Current section
Files
Jump to
Current section
Files
native/kameleoon_elixir_bridge/src/feature_flag_ex.rs
use std::collections::HashMap;
use kameleoon_core::types::FeatureFlag as TypesFeatureFlag;
use crate::rule_ex::RuleEx;
use crate::utils_ex::ArcStr;
use crate::variation_ex::VariationEx;
#[derive(Debug, rustler::NifStruct)]
#[module = "Kameleoon.Types.FeatureFlag"]
#[rustler(encode)]
pub(crate) struct FeatureFlagEx {
environment_enabled: bool,
default_variation_key: ArcStr,
variations: HashMap<ArcStr, VariationEx>,
rules: Vec<RuleEx>,
}
impl From<&TypesFeatureFlag> for FeatureFlagEx {
fn from(value: &TypesFeatureFlag) -> Self {
Self {
environment_enabled: value.environment_enabled,
default_variation_key: ArcStr::from(value.default_variation_key.clone()),
variations: value
.variations
.iter()
.map(|(key, variation)| (ArcStr::from(key.clone()), VariationEx::from(variation)))
.collect(),
rules: value.rules.iter().map(RuleEx::from).collect(),
}
}
}