mod impl_relationship;
#[derive(Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct FeatureRelationship<T = f32> {
pub(crate) source_id: usize,
pub(crate) to_id: usize,
pub(crate) relationship_type: RelationshipType,
pub(crate) strength: T,
pub(crate) occurrences: usize,
}
#[derive(
Clone,
Copy,
Debug,
Default,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
strum::AsRefStr,
strum::Display,
strum::EnumCount,
strum::EnumIs,
strum::EnumIter,
strum::EnumString,
strum::VariantArray,
strum::VariantNames,
)]
#[cfg_attr(
feature = "serde",
derive(serde::Deserialize, serde::Serialize),
serde(rename_all = "lowercase")
)]
#[strum(serialize_all = "lowercase")]
pub enum RelationshipType {
#[default]
Causal,
Composition,
Critical,
Interval,
Proximity,
Transformation,
}