use std::fmt::Debug;
use mzcore::{
glycan::{GlycanPosition, MonoSaccharide},
prelude::*,
sequence::{Modification, PeptidePosition},
};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub enum DiagnosticPosition {
Glycan(GlycanPosition, MonoSaccharide),
GlycanCompositional(MonoSaccharide, Option<(AminoAcid, SequencePosition)>),
Peptide(PeptidePosition, AminoAcid),
Labile(Modification),
Reporter,
}
impl mzcore::space::Space for DiagnosticPosition {
fn space(&self) -> mzcore::space::UsedSpace {
match self {
Self::Glycan(p, s) => p.space() + s.space(),
Self::GlycanCompositional(s, a) => s.space() + a.space(),
Self::Peptide(p, a) => p.space() + a.space(),
Self::Labile(m) => m.space(),
Self::Reporter => mzcore::space::UsedSpace::default(),
}
.set_total::<Self>()
}
}