use typed_builder::TypedBuilder;
use crate::{EvaluationReason, FlagMetadata};
#[derive(Clone, TypedBuilder, Debug)]
pub struct ResolutionDetails<T> {
pub value: T,
#[builder(default, setter(into, strip_option))]
pub variant: Option<String>,
#[builder(default, setter(strip_option))]
pub reason: Option<EvaluationReason>,
#[builder(default, setter(strip_option))]
pub flag_metadata: Option<FlagMetadata>,
}
impl<T: Default> Default for ResolutionDetails<T> {
fn default() -> Self {
Self {
value: T::default(),
variant: None,
reason: None,
flag_metadata: None,
}
}
}
impl<T> ResolutionDetails<T> {
pub fn new(value: impl Into<T>) -> Self {
Self {
value: value.into(),
variant: None,
reason: None,
flag_metadata: None,
}
}
}