1use crate::clause::{Fact, Rule};
3use crate::directive::Directive;
4use crate::query::Query;
5use std::fmt;
6
7#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
9pub enum PlainClause {
10 Fact(Fact),
12 Rule(Rule),
14}
15
16impl fmt::Display for PlainClause {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 PlainClause::Fact(fact) => write!(f, "{}.", fact),
20 PlainClause::Rule(rule) => write!(f, "{}.", rule),
21 }
22 }
23}
24
25#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
27pub struct Probabilistic {
28 pub probability: f64,
30 pub clause: PlainClause,
32}
33
34impl fmt::Display for Probabilistic {
35 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36 write!(f, "{} :: {}", self.probability, self.clause)
37 }
38}
39
40#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
42pub enum Item {
43 Fact(Fact),
45 Rule(Rule),
47 Query(Query),
49 Directive(Directive),
51 Probabilistic(Probabilistic),
53}
54
55impl fmt::Display for Item {
56 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
57 match self {
58 Item::Fact(fact) => write!(f, "{}.", fact),
59 Item::Rule(rule) => write!(f, "{}.", rule),
60 Item::Query(query) => write!(f, "{}", query),
61 Item::Directive(dir) => write!(f, "{}", dir),
62 Item::Probabilistic(prob) => write!(f, "{}", prob),
63 }
64 }
65}