diff options
Diffstat (limited to 'src/message/history.rs')
| -rw-r--r-- | src/message/history.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/message/history.rs b/src/message/history.rs index 0424d0d..ed8f5df 100644 --- a/src/message/history.rs +++ b/src/message/history.rs @@ -1,8 +1,10 @@ +use itertools::Itertools as _; + use super::{ event::{Deleted, Event, Sent}, Id, Message, }; -use crate::event::{Instant, ResumePoint, Sequence}; +use crate::event::{Instant, Sequence}; #[derive(Clone, Debug, Eq, PartialEq)] pub struct History { @@ -25,9 +27,9 @@ impl History { self.message.clone() } - pub fn as_of(&self, resume_point: impl Into<ResumePoint>) -> Option<Message> { + pub fn as_of(&self, resume_point: Sequence) -> Option<Message> { self.events() - .filter(Sequence::up_to(resume_point.into())) + .filter(Sequence::up_to(resume_point)) .collect() } @@ -57,6 +59,8 @@ impl History { } pub fn events(&self) -> impl Iterator<Item = Event> { - [self.sent()].into_iter().chain(self.deleted()) + [self.sent()] + .into_iter() + .merge_by(self.deleted(), Sequence::merge) } } |
