lib/grammar/ast/control/
require.rs

1use 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}