json_event_parser_witespace/
event.rs

1use std::borrow::Cow;
2
3/// Possible events during JSON parsing
4#[allow(dead_code)]
5#[derive(Eq, PartialEq, Debug, Clone, Hash)]
6pub enum JsonEvent<'a> {
7    String(Cow<'a, str>),
8    Number(Cow<'a, str>),
9    Boolean(bool),
10    Null,
11    StartArray,
12    NextArrayValue,
13    EndArray,
14    StartObject,
15    NextObjectValue,
16    EndObject,
17    ObjectKey(Cow<'a, str>),
18    Eof,
19    WhiteSpace(String),
20}
21
22impl<'a> JsonEvent<'a> {
23    #[allow(dead_code)]
24    #[allow(clippy::wrong_self_convention)]
25    pub fn into_owned(&self) -> JsonEvent<'static> {
26        match self {
27            JsonEvent::String(s) => JsonEvent::String(Cow::Owned(s.to_string())),
28            JsonEvent::Number(s) => JsonEvent::Number(Cow::Owned(s.to_string())),
29            JsonEvent::Boolean(b) => JsonEvent::Boolean(*b),
30            JsonEvent::Null => JsonEvent::Null,
31            JsonEvent::StartArray => JsonEvent::StartArray,
32            JsonEvent::EndArray => JsonEvent::EndArray,
33            JsonEvent::StartObject => JsonEvent::StartObject,
34            JsonEvent::NextObjectValue => JsonEvent::NextObjectValue,
35            JsonEvent::EndObject => JsonEvent::EndObject,
36            JsonEvent::ObjectKey(s) => JsonEvent::ObjectKey(Cow::Owned(s.to_string())),
37            JsonEvent::Eof => JsonEvent::Eof,
38            JsonEvent::WhiteSpace(s) => JsonEvent::WhiteSpace(s.to_string()),
39            JsonEvent::NextArrayValue => JsonEvent::NextArrayValue,
40        }
41    }
42}