Support formatting special integers separately

This adds Debug and Display trait implementations for the SpecialInteger
enum to make it possible to format its values without having to wrap it
in a Term variant.
This commit is contained in:
Patrick Lühne 2020-03-30 05:30:29 +02:00
parent 14abd73110
commit a7e07380ff
Signed by: patrick
GPG Key ID: 05F3611E97A70ABF

View File

@ -67,6 +67,26 @@ impl Precedence for crate::Formula
} }
} }
impl std::fmt::Debug for crate::SpecialInteger
{
fn fmt(&self, format: &mut std::fmt::Formatter) -> std::fmt::Result
{
match &self
{
crate::SpecialInteger::Infimum => write!(format, "#inf"),
crate::SpecialInteger::Supremum => write!(format, "#sup"),
}
}
}
impl std::fmt::Display for crate::SpecialInteger
{
fn fmt(&self, format: &mut std::fmt::Formatter) -> std::fmt::Result
{
write!(format, "{:?}", &self)
}
}
impl std::fmt::Debug for crate::FunctionDeclaration impl std::fmt::Debug for crate::FunctionDeclaration
{ {
fn fmt(&self, format: &mut std::fmt::Formatter) -> std::fmt::Result fn fmt(&self, format: &mut std::fmt::Formatter) -> std::fmt::Result
@ -151,8 +171,7 @@ impl<'term> std::fmt::Debug for TermDisplay<'term>
{ {
crate::Term::Boolean(true) => write!(format, "true"), crate::Term::Boolean(true) => write!(format, "true"),
crate::Term::Boolean(false) => write!(format, "false"), crate::Term::Boolean(false) => write!(format, "false"),
crate::Term::SpecialInteger(crate::SpecialInteger::Infimum) => write!(format, "#inf"), crate::Term::SpecialInteger(value) => write!(format, "{:?}", value),
crate::Term::SpecialInteger(crate::SpecialInteger::Supremum) => write!(format, "#sup"),
crate::Term::Integer(value) => write!(format, "{}", value), crate::Term::Integer(value) => write!(format, "{}", value),
crate::Term::String(value) => write!(format, "\"{}\"", value), crate::Term::String(value) => write!(format, "\"{}\"", value),
crate::Term::Variable(variable) => write!(format, "{:?}", variable.declaration), crate::Term::Variable(variable) => write!(format, "{:?}", variable.declaration),