pub struct Context { /* private fields */ }Expand description
Ordered set of specs with temporal versioning.
Specs with the same name are ordered by effective_from. A temporal version’s end is derived from the next temporal version’s effective_from, or +inf.
Implementations§
Source§impl Context
impl Context
pub fn new() -> Self
Sourcepub fn get_spec_effective_from(
&self,
name: &str,
effective_from: Option<&DateTimeValue>,
) -> Option<Arc<LemmaSpec>>
pub fn get_spec_effective_from( &self, name: &str, effective_from: Option<&DateTimeValue>, ) -> Option<Arc<LemmaSpec>>
Exact identity lookup by (name, effective_from).
None matches specs without temporal versioning. Some(d) matches the temporal version whose effective_from equals d.
Sourcepub fn get_spec(
&self,
name: &str,
effective: &DateTimeValue,
) -> Option<Arc<LemmaSpec>>
pub fn get_spec( &self, name: &str, effective: &DateTimeValue, ) -> Option<Arc<LemmaSpec>>
Temporal range resolution: find the temporal version of name that is active at effective.
A spec is active at effective when:
effective_from <= effective < effective_to
where effective_to is the next temporal version’s effective_from, or +inf if no successor.
pub fn iter(&self) -> impl Iterator<Item = Arc<LemmaSpec>> + '_
Sourcepub fn insert_spec(&mut self, spec: Arc<LemmaSpec>) -> Result<(), Error>
pub fn insert_spec(&mut self, spec: Arc<LemmaSpec>) -> Result<(), Error>
Insert a spec. Validates no duplicate (name, effective_from).
pub fn remove_spec(&mut self, spec: &Arc<LemmaSpec>) -> bool
Sourcepub fn effective_range(
&self,
spec: &Arc<LemmaSpec>,
) -> (Option<DateTimeValue>, Option<DateTimeValue>)
pub fn effective_range( &self, spec: &Arc<LemmaSpec>, ) -> (Option<DateTimeValue>, Option<DateTimeValue>)
Returns the effective range [from, to) for a spec in this context.
from:spec.effective_from()(None = -∞)to: next temporal version’seffective_from, or None (+∞) if no successor.
Sourcepub fn version_boundaries(&self, name: &str) -> Vec<DateTimeValue>
pub fn version_boundaries(&self, name: &str) -> Vec<DateTimeValue>
Returns all effective_from dates for temporal versions of name, sorted ascending.
Temporal versions without effective_from are excluded (they represent -∞).
Sourcepub fn dep_coverage_gaps(
&self,
dep_name: &str,
required_from: Option<&DateTimeValue>,
required_to: Option<&DateTimeValue>,
) -> Vec<(Option<DateTimeValue>, Option<DateTimeValue>)>
pub fn dep_coverage_gaps( &self, dep_name: &str, required_from: Option<&DateTimeValue>, required_to: Option<&DateTimeValue>, ) -> Vec<(Option<DateTimeValue>, Option<DateTimeValue>)>
Check if temporal versions of dep_name fully cover the range
[required_from, required_to).
Returns gaps as (start, end) intervals. Empty vec = fully covered.
Start: None = -∞, End: None = +∞.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Context
impl RefUnwindSafe for Context
impl Send for Context
impl Sync for Context
impl Unpin for Context
impl UnsafeUnpin for Context
impl UnwindSafe for Context
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more