use crate::precursor::PrecursorId;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RejectionCode {
NoStoichiometricBalance,
MissingTargetElement,
ForbiddenElementPresent,
PrecursorCountExceeded,
UnsupportedByproductRequired,
AtmosphereConflict,
UserConstraintViolation,
HazardPolicyBlocked,
ThermodynamicDataUnavailable,
SearchBudgetExhausted,
DuplicatePlan,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RejectedCandidate {
pub precursors: Vec<PrecursorId>,
pub reason_codes: Vec<RejectionCode>,
pub explanation: String,
}