Skip to content

Commit

Permalink
feat(data): impl Data for OnceLock
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianSpeitel committed Feb 19, 2024
1 parent b77277a commit 2e34219
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/data/impls/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,42 @@ impl<D: Data> Data for core::cell::OnceCell<D> {
}
}

impl<D: Data> Data for std::sync::OnceLock<D> {
#[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<crate::id::ID> {
if let Some(d) = self.get() {
d.get_id()
} else {
None
}
}
}

#[cfg(test)]
mod tests {
use crate::value::Value;
Expand Down

0 comments on commit 2e34219

Please sign in to comment.