lib/grammar/ast/test/
boolean.rs

1use pest::iterators::Pair;
2use serde::Serialize;
3
4use crate::grammar::ast::literal::{Literal, LiteralTypes};
5use crate::grammar::parser::Rule;
6
7#[derive(Debug, Clone, Eq, PartialEq, Serialize)]
8#[serde(tag = "kind")]
9pub struct TestFalse {
10    value: LiteralTypes,
11}
12
13impl Default for TestFalse {
14    fn default() -> Self {
15        Self {
16            value: LiteralTypes::Boolean(true),
17        }
18    }
19}
20
21impl<'r> From<Pair<'r, Rule>> for TestFalse {
22    fn from(pair: Pair<'r, Rule>) -> Self {
23        let value = Literal::from(pair.into_inner().next().unwrap()).inner();
24        Self { value }
25    }
26}
27
28#[derive(Debug, Clone, Eq, PartialEq, Serialize)]
29#[serde(tag = "kind")]
30pub struct TestTrue {
31    value: LiteralTypes,
32}
33
34impl Default for TestTrue {
35    fn default() -> Self {
36        Self {
37            value: LiteralTypes::Boolean(true),
38        }
39    }
40}
41
42impl<'r> From<Pair<'r, Rule>> for TestTrue {
43    fn from(pair: Pair<'r, Rule>) -> Self {
44        let value = Literal::from(pair.into_inner().next().unwrap()).inner();
45        Self { value }
46    }
47}
48
49// impl Boolean<'_> for TestTrue {}
50
51// pub trait Alias: One + Two {}
52
53// impl<T> Alias for T where T: One + Two {}
54
55// impl<T: From> From for T {
56//     fn my_extension(self) -> Self {
57//       println!("Hey, it worked!");
58//       self
59//     }
60//   }
61
62// pub trait Boolean<'r>: From<Pair<'r, Rule>>
63// where
64//     // Self: From<Pair<'r, Rule>> + Sized,
65//     Self: Sized,
66// {
67//     // fn from(pair: Pair<'r, Rule>) -> Self {
68//     //     let value = Literal::from(pair.into_inner().next().unwrap()).inner();
69//     //     Self { value }
70//     // }
71
72//     // fn from(pair: Pair<'r, Rule>) -> Self {
73//     //     let value = Literal::from(pair.into_inner().next().unwrap()).inner();
74//     //     Self { value }
75//     // }
76
77//     fn summarize(&self) -> String {
78//         String::from("(Read more...)")
79//     }
80// }
81
82// pub trait Boolean<'r>: From<Pair<'r, Rule>> {
83//     fn from(pair: Pair<'r, Rule>) -> Self {
84//         let value = Literal::from(pair.into_inner().next().unwrap()).inner();
85//         Self { value }
86//     }
87
88//     fn summarize(&self) -> String {
89//         String::from("(Read more...)")
90//     }
91// }