diff --git a/src/data/impls/core.rs b/src/data/impls/core.rs index d14b78c..6178538 100644 --- a/src/data/impls/core.rs +++ b/src/data/impls/core.rs @@ -332,6 +332,42 @@ impl Data for core::cell::OnceCell { } } +impl Data for std::sync::OnceLock { + #[inline] + fn provide_value<'d>(&'d self, builder: &mut dyn ValueBuiler<'d>) { + if let Some(d) = self.get() { + d.provide_value(builder); + } + } + #[inline] + fn provide_links(&self, links: &mut dyn Links) -> Result<(), LinkError> { + if let Some(d) = self.get() { + d.provide_links(links)?; + } + Ok(()) + } + #[inline] + fn query_links( + &self, + links: &mut dyn Links, + query: &crate::query::Query, + ) -> Result<(), LinkError> { + if let Some(d) = self.get() { + d.query_links(links, query)?; + } + Ok(()) + } + + #[inline] + fn get_id(&self) -> Option { + if let Some(d) = self.get() { + d.get_id() + } else { + None + } + } +} + #[cfg(test)] mod tests { use crate::value::Value;