Commit e551658a authored by Kai Hiller's avatar Kai Hiller
Browse files

Make model.Message order by date, then id

parent fbf2027d
......@@ -49,19 +49,32 @@ pub struct Message {
pub extra_content: Option<JsonValue>,
}
impl Eq for Message {}
impl PartialEq for Message {
/// Compares equal if ids match.
fn eq(&self, other: &Self) -> bool {
self.id == other.id
// - Panics if ids are None.
// - Assumes the date is a function of the id. That means, two Messages
// with the same id will always have the same date.
self.id.as_ref().unwrap() == other.id.as_ref().unwrap()
}
}
impl Ord for Message {
/// Orders based on date, then id.
fn cmp(&self, other: &Self) -> Ordering {
match self.date.cmp(&other.date) {
// Panics if ids are None
Ordering::Equal => self.id.as_ref().unwrap().cmp(&other.id.as_ref().unwrap()),
date_order => date_order,
}
}
}
impl PartialOrd for Message {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
if self == other {
Some(Ordering::Equal)
} else {
self.date.partial_cmp(&other.date)
}
Some(self.cmp(other))
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment