lib/grammar/ast/control/
require.rs1use pest::iterators::Pair;
2use serde::Serialize;
3
4use crate::grammar::{
5 ast::literal::{Literal, LiteralTypes},
6 parser::Rule,
7};
8
9#[derive(Debug, Clone, Eq, PartialEq, Serialize)]
10#[serde(tag = "kind")]
11pub struct ControlRequire {
12 pub capabilities: Option<LiteralTypes>,
13}
14
15impl Default for ControlRequire {
16 fn default() -> Self {
17 Self { capabilities: None }
18 }
19}
20
21impl<'r> From<Pair<'r, Rule>> for ControlRequire {
22 fn from(pair: Pair<'r, Rule>) -> Self {
23 let capabilities = Some(Literal::from(pair.into_inner().next().unwrap()).inner());
24
25 Self {
26 capabilities,
27 ..Self::default()
28 }
29 }
30}