Skip to content

Commit 9abebeb

Browse files
committed
refactor: remove redundant internal Series APIs
1 parent 53c3ed9 commit 9abebeb

1 file changed

Lines changed: 16 additions & 31 deletions

File tree

src/series/mod.rs

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ where
203203
/// assert_eq!(series.first_event(), Some(Event::at(date(2025, 1, 1).at(0, 0, 0, 0))));
204204
/// ```
205205
pub fn first_event(&self) -> Option<Event> {
206-
self.get_event(self.range.start)
207-
.or_else(|| self.get_event_after(self.range.start))
206+
self.get_closest_event(self.range.start)
208207
}
209208

210209
/// Gets the last event in the series.
@@ -263,12 +262,10 @@ where
263262
/// assert!(series.get_event(date(2026, 12, 31).at(14, 0, 0, 0)).is_some());
264263
/// ```
265264
pub fn get_event(&self, instant: DateTime) -> Option<Event> {
266-
let closest = self.closest_to(instant)?;
267-
if closest == instant {
268-
return self.get_event_unchecked(instant);
269-
}
270-
271-
None
265+
self.pattern
266+
.closest_to(instant, self.range)
267+
.filter(|&start| start == instant)
268+
.and_then(|start| self.get_event_unchecked(start))
272269
}
273270

274271
/// Gets the event containing `instant`.
@@ -312,8 +309,11 @@ where
312309
/// # Ok::<(), Box<dyn core::error::Error>>(())
313310
/// ```
314311
pub fn get_event_containing(&self, instant: DateTime) -> Option<Event> {
315-
self.get_event(instant)
316-
.or_else(|| self.get_event_before(instant))
312+
self.pattern
313+
.closest_to(instant, self.range)
314+
.filter(|&start| start <= instant)
315+
.or_else(|| self.pattern.previous_before(instant, self.range))
316+
.and_then(|start| self.get_event_unchecked(start))
317317
.filter(|event| event.contains(instant))
318318
}
319319

@@ -359,7 +359,8 @@ where
359359
/// # Ok::<(), Box<dyn core::error::Error>>(())
360360
/// ```
361361
pub fn get_event_after(&self, instant: DateTime) -> Option<Event> {
362-
self.next_after(instant)
362+
self.pattern
363+
.next_after(instant, self.range)
363364
.and_then(|next| self.get_event_unchecked(next))
364365
}
365366

@@ -396,7 +397,8 @@ where
396397
/// );
397398
/// ```
398399
pub fn get_event_before(&self, instant: DateTime) -> Option<Event> {
399-
self.previous_before(instant)
400+
self.pattern
401+
.previous_before(instant, self.range)
400402
.and_then(|previous| self.get_event_unchecked(previous))
401403
}
402404

@@ -431,7 +433,8 @@ where
431433
/// );
432434
/// ```
433435
pub fn get_closest_event(&self, instant: DateTime) -> Option<Event> {
434-
self.closest_to(instant)
436+
self.pattern
437+
.closest_to(instant, self.range)
435438
.and_then(|closest| self.get_event_unchecked(closest))
436439
}
437440
}
@@ -441,24 +444,6 @@ impl<P> Series<P>
441444
where
442445
P: Pattern,
443446
{
444-
/// Find the next `DateTime` after `instant` within the series.
445-
#[inline]
446-
fn next_after(&self, instant: DateTime) -> Option<DateTime> {
447-
self.pattern.next_after(instant, self.range)
448-
}
449-
450-
/// Find the previous `DateTime` before `instant` within the series.
451-
#[inline]
452-
fn previous_before(&self, instant: DateTime) -> Option<DateTime> {
453-
self.pattern.previous_before(instant, self.range)
454-
}
455-
456-
/// Find a `DateTime` closest to `instant` within the series.
457-
#[inline]
458-
fn closest_to(&self, instant: DateTime) -> Option<DateTime> {
459-
self.pattern.closest_to(instant, self.range)
460-
}
461-
462447
/// Get an event without any bound checks. The datetime at `start` is assumed to be aligned to
463448
/// the series and within the series start and end bounds.
464449
#[inline]

0 commit comments

Comments
 (0)