diff --git a/lib/oxrdf/src/blank_node.rs b/lib/oxrdf/src/blank_node.rs index 3d3931cb..eb94e6e1 100644 --- a/lib/oxrdf/src/blank_node.rs +++ b/lib/oxrdf/src/blank_node.rs @@ -103,22 +103,6 @@ impl fmt::Display for BlankNode { } } -impl TryFrom for BlankNode { - type Error = TermCastError; - - #[inline] - fn try_from(term: Term) -> Result { - if let Term::BlankNode(node) = term { - Ok(node) - } else { - Err( - TermCastErrorKind::Msg(format!("Cannot convert term to a blank node: {}", term)) - .into(), - ) - } - } -} - impl Default for BlankNode { /// Builds a new RDF [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node) with a unique id. #[inline] @@ -249,6 +233,22 @@ impl<'a> From> for BlankNode { } } +impl TryFrom for BlankNode { + type Error = TermCastError; + + #[inline] + fn try_from(term: Term) -> Result { + if let Term::BlankNode(node) = term { + Ok(node) + } else { + Err( + TermCastErrorKind::Msg(format!("Cannot convert term to a blank node: {}", term)) + .into(), + ) + } + } +} + impl PartialEq for BlankNodeRef<'_> { #[inline] fn eq(&self, other: &BlankNode) -> bool { diff --git a/lib/oxrdf/src/literal.rs b/lib/oxrdf/src/literal.rs index 5ee8d3bd..dec025ba 100644 --- a/lib/oxrdf/src/literal.rs +++ b/lib/oxrdf/src/literal.rs @@ -161,22 +161,6 @@ impl fmt::Display for Literal { } } -impl TryFrom for Literal { - type Error = TermCastError; - - #[inline] - fn try_from(term: Term) -> Result { - if let Term::Literal(node) = term { - Ok(node) - } else { - Err( - TermCastErrorKind::Msg(format!("Cannot convert term to a literal: {}", term)) - .into(), - ) - } - } -} - impl<'a> From<&'a str> for Literal { #[inline] fn from(value: &'a str) -> Self { @@ -438,6 +422,22 @@ impl From for Literal { } } +impl TryFrom for Literal { + type Error = TermCastError; + + #[inline] + fn try_from(term: Term) -> Result { + if let Term::Literal(node) = term { + Ok(node) + } else { + Err( + TermCastErrorKind::Msg(format!("Cannot convert term to a literal: {}", term)) + .into(), + ) + } + } +} + /// A borrowed RDF [literal](https://www.w3.org/TR/rdf11-concepts/#dfn-literal). /// /// The default string formatter is returning an N-Triples, Turtle, and SPARQL compatible representation: diff --git a/lib/oxrdf/src/named_node.rs b/lib/oxrdf/src/named_node.rs index a0b25348..8d692f8c 100644 --- a/lib/oxrdf/src/named_node.rs +++ b/lib/oxrdf/src/named_node.rs @@ -218,22 +218,6 @@ impl PartialOrd> for NamedNode { } } -impl TryFrom for NamedNode { - type Error = TermCastError; - - #[inline] - fn try_from(term: Term) -> Result { - if let Term::NamedNode(node) = term { - Ok(node) - } else { - Err( - TermCastErrorKind::Msg(format!("Cannot convert term to a named node: {}", term)) - .into(), - ) - } - } -} - impl From> for NamedNode { #[inline] fn from(iri: Iri) -> Self { @@ -252,6 +236,22 @@ impl<'a> From> for NamedNodeRef<'a> { } } +impl TryFrom for NamedNode { + type Error = TermCastError; + + #[inline] + fn try_from(term: Term) -> Result { + if let Term::NamedNode(node) = term { + Ok(node) + } else { + Err( + TermCastErrorKind::Msg(format!("Cannot convert term to a named node: {}", term)) + .into(), + ) + } + } +} + #[cfg(test)] mod tests { #![allow(clippy::panic_in_result_fn)] diff --git a/lib/oxrdf/src/triple.rs b/lib/oxrdf/src/triple.rs index 3db327c4..524e1755 100644 --- a/lib/oxrdf/src/triple.rs +++ b/lib/oxrdf/src/triple.rs @@ -196,25 +196,6 @@ impl fmt::Display for Subject { } } -impl TryFrom for Subject { - type Error = TermCastError; - - #[inline] - fn try_from(term: Term) -> Result { - match term { - Term::NamedNode(node) => Ok(Subject::NamedNode(node)), - Term::BlankNode(node) => Ok(Subject::BlankNode(node)), - #[cfg(feature = "rdf-star")] - Term::Triple(triple) => Ok(Subject::Triple(triple)), - Term::Literal(literal) => Err(TermCastErrorKind::Msg(format!( - "Cannot convert a literal to a subject: {}", - literal - )) - .into()), - } - } -} - impl From for Subject { #[inline] fn from(node: NamedNode) -> Self { @@ -243,6 +224,25 @@ impl From> for Subject { } } +impl TryFrom for Subject { + type Error = TermCastError; + + #[inline] + fn try_from(term: Term) -> Result { + match term { + Term::NamedNode(node) => Ok(Subject::NamedNode(node)), + Term::BlankNode(node) => Ok(Subject::BlankNode(node)), + #[cfg(feature = "rdf-star")] + Term::Triple(triple) => Ok(Subject::Triple(triple)), + Term::Literal(literal) => Err(TermCastErrorKind::Msg(format!( + "Cannot convert a literal to a subject: {}", + literal + )) + .into()), + } + } +} + #[cfg(feature = "rdf-star")] impl From for Subject { #[inline]