1#[derive(Clone, Debug, PartialEq, Eq, Hash)]
2pub enum NodeOrToken<N, T> {
4 Node(N),
5 Token(T),
6}
7impl<N, T> NodeOrToken<N, T> {
8 #[inline]
9 pub fn into_node(self) -> Option<N> {
10 if let NodeOrToken::Node(node) = self {
11 Some(node)
12 } else {
13 None
14 }
15 }
16 #[inline]
17 pub fn into_token(self) -> Option<T> {
18 if let NodeOrToken::Token(token) = self {
19 Some(token)
20 } else {
21 None
22 }
23 }
24 #[inline]
25 pub fn as_node(&self) -> Option<&N> {
26 if let NodeOrToken::Node(node) = self {
27 Some(node)
28 } else {
29 None
30 }
31 }
32 #[inline]
33 pub fn as_token(&self) -> Option<&T> {
34 if let NodeOrToken::Token(token) = self {
35 Some(token)
36 } else {
37 None
38 }
39 }
40}