1use crate::model::{BlankNode, NamedNode};
7
8#[derive(Clone, Debug, PartialEq, Eq)]
10pub enum NamedOrBlankNode {
11 NamedNode(NamedNode),
12 BlankNode(BlankNode),
13}
14
15impl From<NamedNode> for NamedOrBlankNode {
16 fn from(node: NamedNode) -> Self {
17 NamedOrBlankNode::NamedNode(node)
18 }
19}
20
21impl From<BlankNode> for NamedOrBlankNode {
22 fn from(node: BlankNode) -> Self {
23 NamedOrBlankNode::BlankNode(node)
24 }
25}
26
27impl From<NamedOrBlankNode> for crate::model::term::Subject {
28 fn from(node: NamedOrBlankNode) -> Self {
29 match node {
30 NamedOrBlankNode::NamedNode(n) => crate::model::term::Subject::NamedNode(n),
31 NamedOrBlankNode::BlankNode(n) => crate::model::term::Subject::BlankNode(n),
32 }
33 }
34}
35
36impl NamedOrBlankNode {
37 pub fn as_ref(&self) -> NamedOrBlankNodeRef<'_> {
38 match self {
39 NamedOrBlankNode::NamedNode(n) => NamedOrBlankNodeRef::NamedNode(n),
40 NamedOrBlankNode::BlankNode(n) => NamedOrBlankNodeRef::BlankNode(n),
41 }
42 }
43}
44
45#[derive(Clone, Copy, Debug, PartialEq, Eq)]
47pub enum NamedOrBlankNodeRef<'a> {
48 NamedNode(&'a NamedNode),
49 BlankNode(&'a BlankNode),
50}
51
52impl<'a> From<&'a NamedOrBlankNode> for NamedOrBlankNodeRef<'a> {
53 fn from(node: &'a NamedOrBlankNode) -> Self {
54 node.as_ref()
55 }
56}
57
58impl From<NamedOrBlankNode> for crate::model::term::Object {
59 fn from(node: NamedOrBlankNode) -> Self {
60 match node {
61 NamedOrBlankNode::NamedNode(n) => crate::model::term::Object::NamedNode(n),
62 NamedOrBlankNode::BlankNode(n) => crate::model::term::Object::BlankNode(n),
63 }
64 }
65}