use std::{fmt::Display, hash::Hash};
use super::ExpandedPair;
#[derive(Clone)]
pub struct ExpandedRow {
pairs: Vec<ExpandedPair>,
rowNumber: u32,
}
impl ExpandedRow {
pub fn new(pairs: Vec<ExpandedPair>, rowNumber: u32) -> Self {
Self { pairs, rowNumber }
}
pub fn getPairs(&self) -> &[ExpandedPair] {
&self.pairs
}
#[cfg(test)]
pub(crate) fn getPairsMut(&mut self) -> &mut [ExpandedPair] {
&mut self.pairs
}
pub fn getRowNumber(&self) -> u32 {
self.rowNumber
}
pub fn isEquivalent(&self, otherPairs: &[ExpandedPair]) -> bool {
self.pairs == otherPairs
}
}
impl PartialEq for ExpandedRow {
fn eq(&self, other: &Self) -> bool {
self.pairs == other.pairs
}
}
impl Hash for ExpandedRow {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.pairs.hash(state);
}
}
impl Display for ExpandedRow {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{{ ")?;
for p in &self.pairs {
write!(f, "{p}")?;
}
write!(f, " }}") }
}