#![doc = include_str!("../README.md")]
use std::cmp::Ordering;
use ontolius::TermId;
#[cfg(test)]
mod model;
#[cfg(test)]
mod subjects;
pub mod ic;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TermPair {
left: TermId,
right: TermId,
}
impl TermPair {
pub fn left(&self) -> &TermId {
&self.left
}
pub fn right(&self) -> &TermId {
&self.right
}
}
impl From<(TermId, TermId)> for TermPair {
fn from(value: (TermId, TermId)) -> Self {
match value.0.cmp(&value.1) {
Ordering::Less | Ordering::Equal => Self {
left: value.0,
right: value.1,
},
Ordering::Greater => Self {
left: value.1,
right: value.0,
},
}
}
}
impl<'a> From<(&'a TermId, &'a TermId)> for TermPair {
fn from(value: (&'a TermId, &'a TermId)) -> Self {
Self::from((value.0.clone(), value.1.clone()))
}
}
impl From<TermId> for TermPair {
fn from(value: TermId) -> Self {
Self {
left: Clone::clone(&value),
right: value,
}
}
}