Prohibiting sets

This commit is contained in:
elvis
2025-08-27 23:59:19 +02:00
parent a0f4297774
commit 391a93ab09
2 changed files with 130 additions and 0 deletions

52
src/rsprocess/element.rs Normal file
View File

@ -0,0 +1,52 @@
use serde::{Serialize, Deserialize};
use std::fmt;
use super::translator::PrintableWithTranslator;
pub type IdType = u32;
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum IdState {
Positive,
Negative
}
impl fmt::Display for IdState {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Positive => write!(f, "+"),
Self::Negative => write!(f, "-")
}
}
}
impl std::ops::Not for IdState {
type Output = Self;
fn not(self) -> Self::Output {
match self {
Self::Positive => Self::Negative,
Self::Negative => Self::Positive
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub struct PositiveType {
pub id: IdType,
pub state: IdState
}
impl PrintableWithTranslator for PositiveType {
fn print(&self,
f: &mut fmt::Formatter,
translator: &super::translator::Translator)
-> std::fmt::Result {
write!(f,
"{}{}",
self.state,
translator.decode(self.id).unwrap_or("Missing".into())
)
}
}