Current section

Files

Jump to
kameleoon_client native kameleoon_elixir_bridge src variation_ex.rs
Raw

native/kameleoon_elixir_bridge/src/variation_ex.rs

use kameleoon_core::types::Variation;
use crate::{utils_ex::ArcStr, variable_ex::VariableEx};
#[derive(Debug, rustler::NifStruct)]
#[module = "Kameleoon.Types.Variation"]
#[rustler(encode)]
pub(crate) struct VariationEx {
key: ArcStr,
name: ArcStr,
id: Option<u32>,
experiment_id: Option<u32>,
variables: Vec<VariableEx>,
}
impl From<Variation> for VariationEx {
fn from(value: Variation) -> Self {
Self {
key: ArcStr::from(value.key),
name: ArcStr::from(value.name),
id: value.id,
experiment_id: value.experiment_id,
variables: value.variables.into_iter().map(VariableEx::from).collect(),
}
}
}
impl From<&Variation> for VariationEx {
fn from(value: &Variation) -> Self {
Self {
key: ArcStr::from(value.key.clone()),
name: ArcStr::from(value.name.clone()),
id: value.id,
experiment_id: value.experiment_id,
variables: value.variables.iter().map(VariableEx::from).collect(),
}
}
}