rdfx 0.23.2

RDF 1.2 data-structures, traits and utilities: terms (incl. triple terms), triples, quads, interpretations, graphs, datasets, unstar/restar reification helpers.
Documentation
use std::fmt;

use iri_rs::Iri;

use crate::{BlankId, RdfDisplay};

use super::Id;

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum IdRef<'a> {
    BlankId(&'a BlankId),
    Iri(Iri<&'a str>),
}

impl IdRef<'_> {
    pub fn to_owned(&self) -> Id {
        self.into_owned()
    }

    pub fn into_owned(self) -> Id {
        match self {
            Self::BlankId(blank_id) => Id::BlankId(blank_id.to_owned()),
            Self::Iri(iri) => Id::Iri(iri.into()),
        }
    }
}

impl fmt::Display for IdRef<'_> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::BlankId(b) => b.fmt(f),
            Self::Iri(iri) => iri.fmt(f),
        }
    }
}

impl RdfDisplay for IdRef<'_> {
    fn rdf_fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::BlankId(b) => b.rdf_fmt(f),
            Self::Iri(iri) => iri.rdf_fmt(f),
        }
    }
}