From 39a6a2eb8c954f4da98b6813446917dbd2a6dbe7 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Thu, 23 May 2024 13:40:08 +0200 Subject: [PATCH] =?UTF-8?q?chore(sdk):=20Rename=20`Update::PushItems::posi?= =?UTF-8?q?tion=5Fhint`=20to=20`=E2=80=A6::at`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/event_cache/linked_chunk/as_vector.rs | 20 +-- .../src/event_cache/linked_chunk/mod.rs | 123 +++++------------- .../src/event_cache/linked_chunk/updates.rs | 50 +++---- 3 files changed, 71 insertions(+), 122 deletions(-) diff --git a/crates/matrix-sdk/src/event_cache/linked_chunk/as_vector.rs b/crates/matrix-sdk/src/event_cache/linked_chunk/as_vector.rs index 3cafea2aa..eb3198071 100644 --- a/crates/matrix-sdk/src/event_cache/linked_chunk/as_vector.rs +++ b/crates/matrix-sdk/src/event_cache/linked_chunk/as_vector.rs @@ -145,11 +145,11 @@ impl UpdateToVectorDiff { /// `VectorDiff::Insert` need an index. To compute this index, the algorithm /// will iterate over all pairs to accumulate each chunk length until it /// finds the appropriate pair (given by - /// [`Update::PushItems::position_hint`]). This is _the offset_. To this - /// offset, the algorithm adds the position's index of the new items - /// (still given by [`Update::PushItems::position_hint`]). This is - /// _the index_. This logic works for all cases as long as pairs are - /// maintained according to the rules hereinabove. + /// [`Update::PushItems::at`]). This is _the offset_. To this offset, the + /// algorithm adds the position's index of the new items (still given by + /// [`Update::PushItems::at`]). This is _the index_. This logic works + /// for all cases as long as pairs are maintained according to the rules + /// hereinabove. /// /// That's a pretty memory compact and computation efficient way to map a /// `Vec>` into a `Vec>`. The larger the @@ -201,7 +201,7 @@ impl UpdateToVectorDiff { // // ``` // Update::PushItems { - // position_hint: Position(ChunkIdentifier(0), 1), + // at: Position(ChunkIdentifier(0), 1), // items: vec!['w', 'x'], // } // Update::NewItemsChunk { @@ -210,7 +210,7 @@ impl UpdateToVectorDiff { // next: Some(ChunkIdentifier(1)), // } // Update::PushItems { - // position_hint: Position(ChunkIdentifier(2), 0), + // at: Position(ChunkIdentifier(2), 0), // items: vec!['y', 'z'], // } // ``` @@ -220,7 +220,7 @@ impl UpdateToVectorDiff { // ``` // Update::StartReattachItems // Update::PushItems { - // position_hint: Position(ChunkIdentifier(2), 2), + // at: Position(ChunkIdentifier(2), 2), // items: vec!['b'] // } // Update::NewItemsChunk { @@ -229,7 +229,7 @@ impl UpdateToVectorDiff { // next: Some(ChunkIdentifier(1)), // } // Update::PushItems { - // position_hint: Position(ChunkIdentifier(3), 0), + // at: Position(ChunkIdentifier(3), 0), // items: vec!['c'], // } // Update::EndReattachItems @@ -320,7 +320,7 @@ impl UpdateToVectorDiff { let _ = self.chunks.remove(chunk_index); } - Update::PushItems { position_hint: position, items } => { + Update::PushItems { at: position, items } => { let expected_chunk_identifier = position.chunk_identifier(); let (chunk_index, offset, chunk_length) = { diff --git a/crates/matrix-sdk/src/event_cache/linked_chunk/mod.rs b/crates/matrix-sdk/src/event_cache/linked_chunk/mod.rs index 0b0f11004..4b78b1849 100644 --- a/crates/matrix-sdk/src/event_cache/linked_chunk/mod.rs +++ b/crates/matrix-sdk/src/event_cache/linked_chunk/mod.rs @@ -1089,7 +1089,7 @@ impl Chunk { if let Some(updates) = updates.as_mut() { updates.push(Update::PushItems { - position_hint: Position(identifier, start), + at: Position(identifier, start), items: items[start..].to_vec(), }); } @@ -1104,7 +1104,7 @@ impl Chunk { if let Some(updates) = updates.as_mut() { updates.push(Update::PushItems { - position_hint: Position(identifier, start), + at: Position(identifier, start), items: items[start..].to_vec(), }); } @@ -1299,14 +1299,14 @@ mod tests { assert_items_eq!(linked_chunk, ['a']); assert_eq!( linked_chunk.updates().unwrap().take(), - &[PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] + &[PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] ); linked_chunk.push_items_back(['b', 'c']); assert_items_eq!(linked_chunk, ['a', 'b', 'c']); assert_eq!( linked_chunk.updates().unwrap().take(), - &[PushItems { position_hint: Position(ChunkIdentifier(0), 1), items: vec!['b', 'c'] }] + &[PushItems { at: Position(ChunkIdentifier(0), 1), items: vec!['b', 'c'] }] ); linked_chunk.push_items_back(['d', 'e']); @@ -1319,7 +1319,7 @@ mod tests { new: ChunkIdentifier(1), next: None }, - PushItems { position_hint: Position(ChunkIdentifier(1), 0), items: vec!['d', 'e'] } + PushItems { at: Position(ChunkIdentifier(1), 0), items: vec!['d', 'e'] } ] ); @@ -1328,22 +1328,19 @@ mod tests { assert_eq!( linked_chunk.updates().unwrap().take(), &[ - PushItems { position_hint: Position(ChunkIdentifier(1), 2), items: vec!['f'] }, + PushItems { at: Position(ChunkIdentifier(1), 2), items: vec!['f'] }, NewItemsChunk { previous: Some(ChunkIdentifier(1)), new: ChunkIdentifier(2), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(2), 0), - items: vec!['g', 'h', 'i'] - }, + PushItems { at: Position(ChunkIdentifier(2), 0), items: vec!['g', 'h', 'i'] }, NewItemsChunk { previous: Some(ChunkIdentifier(2)), new: ChunkIdentifier(3), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(3), 0), items: vec!['j'] }, + PushItems { at: Position(ChunkIdentifier(3), 0), items: vec!['j'] }, ] ); @@ -1359,7 +1356,7 @@ mod tests { assert_items_eq!(linked_chunk, ['a']); assert_eq!( linked_chunk.updates().unwrap().take(), - &[PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] + &[PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] ); linked_chunk.push_gap_back(()); @@ -1384,16 +1381,13 @@ mod tests { new: ChunkIdentifier(2), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(2), 0), - items: vec!['b', 'c', 'd'] - }, + PushItems { at: Position(ChunkIdentifier(2), 0), items: vec!['b', 'c', 'd'] }, NewItemsChunk { previous: Some(ChunkIdentifier(2)), new: ChunkIdentifier(3), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(3), 0), items: vec!['e'] }, + PushItems { at: Position(ChunkIdentifier(3), 0), items: vec!['e'] }, ] ); @@ -1428,16 +1422,13 @@ mod tests { new: ChunkIdentifier(6), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(6), 0), - items: vec!['f', 'g', 'h'] - }, + PushItems { at: Position(ChunkIdentifier(6), 0), items: vec!['f', 'g', 'h'] }, NewItemsChunk { previous: Some(ChunkIdentifier(6)), new: ChunkIdentifier(7), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(7), 0), items: vec!['i'] }, + PushItems { at: Position(ChunkIdentifier(7), 0), items: vec!['i'] }, ] ); @@ -1667,19 +1658,13 @@ mod tests { assert_eq!( linked_chunk.updates().unwrap().take(), &[ - PushItems { - position_hint: Position(ChunkIdentifier(0), 0), - items: vec!['a', 'b', 'c'] - }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a', 'b', 'c'] }, NewItemsChunk { previous: Some(ChunkIdentifier(0)), new: ChunkIdentifier(1), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(1), 0), - items: vec!['d', 'e', 'f'] - }, + PushItems { at: Position(ChunkIdentifier(1), 0), items: vec!['d', 'e', 'f'] }, ] ); @@ -1700,27 +1685,21 @@ mod tests { linked_chunk.updates().unwrap().take(), &[ DetachLastItems { at: Position(ChunkIdentifier(1), 1) }, - PushItems { - position_hint: Position(ChunkIdentifier(1), 1), - items: vec!['w', 'x'] - }, + PushItems { at: Position(ChunkIdentifier(1), 1), items: vec!['w', 'x'] }, NewItemsChunk { previous: Some(ChunkIdentifier(1)), new: ChunkIdentifier(2), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(2), 0), - items: vec!['y', 'z'] - }, + PushItems { at: Position(ChunkIdentifier(2), 0), items: vec!['y', 'z'] }, StartReattachItems, - PushItems { position_hint: Position(ChunkIdentifier(2), 2), items: vec!['e'] }, + PushItems { at: Position(ChunkIdentifier(2), 2), items: vec!['e'] }, NewItemsChunk { previous: Some(ChunkIdentifier(2)), new: ChunkIdentifier(3), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(3), 0), items: vec!['f'] }, + PushItems { at: Position(ChunkIdentifier(3), 0), items: vec!['f'] }, EndReattachItems, ] ); @@ -1740,27 +1719,21 @@ mod tests { linked_chunk.updates().unwrap().take(), &[ DetachLastItems { at: Position(ChunkIdentifier(0), 0) }, - PushItems { - position_hint: Position(ChunkIdentifier(0), 0), - items: vec!['l', 'm', 'n'] - }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['l', 'm', 'n'] }, NewItemsChunk { previous: Some(ChunkIdentifier(0)), new: ChunkIdentifier(4), next: Some(ChunkIdentifier(1)), }, - PushItems { position_hint: Position(ChunkIdentifier(4), 0), items: vec!['o'] }, + PushItems { at: Position(ChunkIdentifier(4), 0), items: vec!['o'] }, StartReattachItems, - PushItems { - position_hint: Position(ChunkIdentifier(4), 1), - items: vec!['a', 'b'] - }, + PushItems { at: Position(ChunkIdentifier(4), 1), items: vec!['a', 'b'] }, NewItemsChunk { previous: Some(ChunkIdentifier(4)), new: ChunkIdentifier(5), next: Some(ChunkIdentifier(1)), }, - PushItems { position_hint: Position(ChunkIdentifier(5), 0), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(5), 0), items: vec!['c'] }, EndReattachItems, ] ); @@ -1780,12 +1753,9 @@ mod tests { linked_chunk.updates().unwrap().take(), &[ DetachLastItems { at: Position(ChunkIdentifier(5), 0) }, - PushItems { - position_hint: Position(ChunkIdentifier(5), 0), - items: vec!['r', 's'] - }, + PushItems { at: Position(ChunkIdentifier(5), 0), items: vec!['r', 's'] }, StartReattachItems, - PushItems { position_hint: Position(ChunkIdentifier(5), 2), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(5), 2), items: vec!['c'] }, EndReattachItems, ] ); @@ -1804,10 +1774,7 @@ mod tests { ); assert_eq!( linked_chunk.updates().unwrap().take(), - &[PushItems { - position_hint: Position(ChunkIdentifier(3), 1), - items: vec!['p', 'q'] - }] + &[PushItems { at: Position(ChunkIdentifier(3), 1), items: vec!['p', 'q'] }] ); assert_eq!(linked_chunk.len(), 18); } @@ -1869,19 +1836,13 @@ mod tests { assert_eq!( linked_chunk.updates().unwrap().take(), &[ - PushItems { - position_hint: Position(ChunkIdentifier(0), 0), - items: vec!['a', 'b', 'c'] - }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a', 'b', 'c'] }, NewItemsChunk { previous: Some(ChunkIdentifier(0)), new: ChunkIdentifier(1), next: None }, - PushItems { - position_hint: Position(ChunkIdentifier(1), 0), - items: vec!['d', 'e', 'f'] - }, + PushItems { at: Position(ChunkIdentifier(1), 0), items: vec!['d', 'e', 'f'] }, ] ); @@ -1907,10 +1868,7 @@ mod tests { new: ChunkIdentifier(3), next: Some(ChunkIdentifier(1)), }, - PushItems { - position_hint: Position(ChunkIdentifier(3), 0), - items: vec!['b', 'c'] - }, + PushItems { at: Position(ChunkIdentifier(3), 0), items: vec!['b', 'c'] }, EndReattachItems, ] ); @@ -1939,7 +1897,7 @@ mod tests { new: ChunkIdentifier(5), next: Some(ChunkIdentifier(2)), }, - PushItems { position_hint: Position(ChunkIdentifier(5), 0), items: vec!['a'] }, + PushItems { at: Position(ChunkIdentifier(5), 0), items: vec!['a'] }, EndReattachItems, ] ); @@ -2055,7 +2013,7 @@ mod tests { assert_eq!( linked_chunk.updates().unwrap().take(), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a', 'b'] }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a', 'b'] }, NewGapChunk { previous: Some(ChunkIdentifier(0)), new: ChunkIdentifier(1), @@ -2067,7 +2025,7 @@ mod tests { new: ChunkIdentifier(2), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(2), 0), items: vec!['l', 'm'] } + PushItems { at: Position(ChunkIdentifier(2), 0), items: vec!['l', 'm'] } ] ); @@ -2091,19 +2049,13 @@ mod tests { new: ChunkIdentifier(3), next: Some(ChunkIdentifier(2)), }, - PushItems { - position_hint: Position(ChunkIdentifier(3), 0), - items: vec!['d', 'e', 'f'] - }, + PushItems { at: Position(ChunkIdentifier(3), 0), items: vec!['d', 'e', 'f'] }, NewItemsChunk { previous: Some(ChunkIdentifier(3)), new: ChunkIdentifier(4), next: Some(ChunkIdentifier(2)), }, - PushItems { - position_hint: Position(ChunkIdentifier(4), 0), - items: vec!['g', 'h'] - }, + PushItems { at: Position(ChunkIdentifier(4), 0), items: vec!['g', 'h'] }, RemoveChunk(ChunkIdentifier(1)), ] ); @@ -2143,16 +2095,13 @@ mod tests { new: ChunkIdentifier(6), next: None, }, - PushItems { - position_hint: Position(ChunkIdentifier(6), 0), - items: vec!['w', 'x', 'y'] - }, + PushItems { at: Position(ChunkIdentifier(6), 0), items: vec!['w', 'x', 'y'] }, NewItemsChunk { previous: Some(ChunkIdentifier(6)), new: ChunkIdentifier(7), next: None, }, - PushItems { position_hint: Position(ChunkIdentifier(7), 0), items: vec!['z'] }, + PushItems { at: Position(ChunkIdentifier(7), 0), items: vec!['z'] }, RemoveChunk(ChunkIdentifier(5)), ] ); diff --git a/crates/matrix-sdk/src/event_cache/linked_chunk/updates.rs b/crates/matrix-sdk/src/event_cache/linked_chunk/updates.rs index 6178f6061..d5962b6d9 100644 --- a/crates/matrix-sdk/src/event_cache/linked_chunk/updates.rs +++ b/crates/matrix-sdk/src/event_cache/linked_chunk/updates.rs @@ -70,7 +70,7 @@ pub enum Update { /// incrementally computed from the previous items, which requires the /// reading of the last previous item. With `at`, the update readers no /// longer need to do so. - position_hint: Position, + at: Position, /// The items. items: Vec, @@ -384,9 +384,9 @@ mod tests { assert_eq!( updates.take(), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, + PushItems { at: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, + PushItems { at: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, ] ); @@ -426,12 +426,12 @@ mod tests { assert_eq!( updates.inner.write().unwrap().take_with_token(other_token), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 3), items: vec!['d'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 4), items: vec!['e'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 5), items: vec!['f'] }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, + PushItems { at: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, + PushItems { at: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(0), 3), items: vec!['d'] }, + PushItems { at: Position(ChunkIdentifier(0), 4), items: vec!['e'] }, + PushItems { at: Position(ChunkIdentifier(0), 5), items: vec!['f'] }, ] ); @@ -501,20 +501,20 @@ mod tests { assert_eq!( updates.take(), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 3), items: vec!['d'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 4), items: vec!['e'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 5), items: vec!['f'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 6), items: vec!['g'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 7), items: vec!['h'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 8), items: vec!['i'] }, + PushItems { at: Position(ChunkIdentifier(0), 3), items: vec!['d'] }, + PushItems { at: Position(ChunkIdentifier(0), 4), items: vec!['e'] }, + PushItems { at: Position(ChunkIdentifier(0), 5), items: vec!['f'] }, + PushItems { at: Position(ChunkIdentifier(0), 6), items: vec!['g'] }, + PushItems { at: Position(ChunkIdentifier(0), 7), items: vec!['h'] }, + PushItems { at: Position(ChunkIdentifier(0), 8), items: vec!['i'] }, ] ); assert_eq!( updates.inner.write().unwrap().take_with_token(other_token), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 6), items: vec!['g'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 7), items: vec!['h'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 8), items: vec!['i'] }, + PushItems { at: Position(ChunkIdentifier(0), 6), items: vec!['g'] }, + PushItems { at: Position(ChunkIdentifier(0), 7), items: vec!['h'] }, + PushItems { at: Position(ChunkIdentifier(0), 8), items: vec!['i'] }, ] ); @@ -600,7 +600,7 @@ mod tests { Poll::Ready(Some(items)) => { assert_eq!( items, - &[PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] + &[PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }] ); } ); @@ -618,9 +618,9 @@ mod tests { assert_eq!( linked_chunk.updates().unwrap().take(), &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(0), 0), items: vec!['a'] }, + PushItems { at: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, + PushItems { at: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, ] ); assert_matches!( @@ -629,8 +629,8 @@ mod tests { assert_eq!( items, &[ - PushItems { position_hint: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, - PushItems { position_hint: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, + PushItems { at: Position(ChunkIdentifier(0), 1), items: vec!['b'] }, + PushItems { at: Position(ChunkIdentifier(0), 2), items: vec!['c'] }, ] ); }