#[derive(Clone, Debug)]
pub enum FieldPlacement {
Metadata,
Result,
ErrorInfo,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SkipIfNone {
Omit,
Keep,
}
impl From<bool> for SkipIfNone {
fn from(value: bool) -> Self { if value { Self::Omit } else { Self::Keep } }
}
#[derive(Debug, Clone)]
#[allow(dead_code, reason = "used by ParamStruct/ResultStruct derive macros")]
pub struct FieldPlacementInfo {
pub field_name: &'static str,
pub placement: FieldPlacement,
pub source_path: Option<&'static str>,
pub skip_if_none: SkipIfNone,
}
#[allow(dead_code, reason = "used by ParamStruct/ResultStruct derive macros")]
pub trait HasFieldPlacement {
fn field_placements() -> Vec<FieldPlacementInfo>;
}