fluent4rs/ast/
argument.rs1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3
4use super::{InlineExpression, NamedArgument};
5#[cfg(feature = "walker")]
6use crate::walker::{Visitor, Walkable, Walker};
7
8#[derive(Clone, Debug, PartialEq)]
11#[cfg_attr(feature = "hash", derive(Eq, PartialOrd, Ord, Hash))]
12#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
13pub enum Argument {
14 #[doc(hidden)]
15 NamedArgument(NamedArgument),
16
17 #[doc(hidden)]
18 InlineExpression(InlineExpression),
19}
20
21#[cfg(feature = "walker")]
22impl Walkable for Argument {
23 fn walk(&self, visitor: &mut dyn Visitor) {
24 visitor.visit_argument(self);
25 match self {
26 Self::NamedArgument(argument) => Walker::walk(argument, visitor),
27 Self::InlineExpression(expression) => Walker::walk(expression, visitor),
28 }
29 }
30}
31
32impl std::fmt::Display for Argument {
33 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 let value = match self {
35 Self::NamedArgument(argument) => argument.to_string(),
36 Self::InlineExpression(argument) => argument.to_string(),
37 };
38 write!(f, "{value}")
39 }
40}