automerge/automerge/src
Alex Good dbf438f7cb
Track whether a transaction is observed in types
With the `OpObserver` moving to the transaction rather than being passed
in to the `Transaction::commit` method we have needed to add a way to
get the observer back out of the transaction (via
`Transaction::observer` and `AutoCommit::observer`). This `Observer`
type is then used to handle patch generation logic. However, there are
cases where we might not want an `OpObserver` and in these cases we can
execute various things fast - so we need to have something like an
`Option<OpObserver>`. In order to track the presence or otherwise of the
observer at the type level introduce
`automerge::transaction::observation`, which is a type level `Option`.
This allows us to efficiently choose the right code paths whilst
maintaining correct types for `Transaction::observer` and
`AutoCommit::observer`
2022-10-06 22:38:37 +01:00
..
automerge Track whether a transaction is observed in types 2022-10-06 22:38:37 +01:00
columnar Add #[derive(Eq)] to satisfy clippy 2022-09-01 12:24:00 +01:00
legacy Add #[derive(Eq)] to satisfy clippy 2022-09-01 12:24:00 +01:00
op_set Plumb in storage-v2 2022-08-22 21:16:47 +01:00
op_tree Add OpIds to enforce ordering of Op::succ and Op::pred 2022-07-17 20:58:47 +01:00
query move automerge-js onto the applyPatches model 2022-10-04 18:17:03 +01:00
storage Correctly encode compressed changes in sync messages 2022-10-02 18:59:41 +01:00
sync Correctly encode compressed changes in sync messages 2022-10-02 18:59:41 +01:00
transaction Track whether a transaction is observed in types 2022-10-06 22:38:37 +01:00
types Remove storage-v2 feature flag 2022-08-22 21:21:21 +01:00
autocommit.rs Track whether a transaction is observed in types 2022-10-06 22:38:37 +01:00
automerge.rs Track whether a transaction is observed in types 2022-10-06 22:38:37 +01:00
autoserde.rs Correct documentation for AutoSerde 2022-09-05 21:11:13 +01:00
change.rs Correctly encode compressed changes in sync messages 2022-10-02 18:59:41 +01:00
clock.rs Use clock_at for filter_changes 2022-05-26 19:03:09 +01:00
clocks.rs Plumb in storage-v2 2022-08-22 21:16:47 +01:00
columnar.rs Remove storage-v2 feature flag 2022-08-22 21:21:21 +01:00
convert.rs Add types to convert between different Op types 2022-08-22 21:06:35 +01:00
decoding.rs Run cargo fix 2022-04-23 11:06:39 +01:00
error.rs Add #[derive(Eq)] to satisfy clippy 2022-09-01 12:24:00 +01:00
exid.rs Fix clippy 2022-03-03 18:22:42 +00:00
indexed_cache.rs Remove storage-v2 feature flag 2022-08-22 21:21:21 +01:00
keys.rs Add debug impls 2022-04-23 11:14:07 +01:00
keys_at.rs Add debug impls 2022-04-23 11:14:07 +01:00
lib.rs The patch interface needs an accurate path per patch op 2022-10-04 18:15:49 +01:00
list_range.rs range -> map_range(), added list_range() values() works on both 2022-05-03 19:27:51 -04:00
list_range_at.rs range -> map_range(), added list_range() values() works on both 2022-05-03 19:27:51 -04:00
map_range.rs range -> map_range(), added list_range() values() works on both 2022-05-03 19:27:51 -04:00
map_range_at.rs range -> map_range(), added list_range() values() works on both 2022-05-03 19:27:51 -04:00
op_observer.rs The patch interface needs an accurate path per patch op 2022-10-04 18:15:49 +01:00
op_set.rs move automerge-js onto the applyPatches model 2022-10-04 18:17:03 +01:00
op_tree.rs Remove storage-v2 feature flag 2022-08-22 21:21:21 +01:00
parents.rs The patch interface needs an accurate path per patch op 2022-10-04 18:15:49 +01:00
query.rs Add OpIds to enforce ordering of Op::succ and Op::pred 2022-07-17 20:58:47 +01:00
sequence_tree.rs Remove const B: usize requirement everywhere 2022-03-31 13:53:26 +01:00
storage.rs Implement storage-v2 2022-08-22 21:16:47 +01:00
sync.rs The patch interface needs an accurate path per patch op 2022-10-04 18:15:49 +01:00
transaction.rs Track whether a transaction is observed in types 2022-10-06 22:38:37 +01:00
types.rs Correctly encode compressed changes in sync messages 2022-10-02 18:59:41 +01:00
value.rs Remove storage-v2 feature flag 2022-08-22 21:21:21 +01:00
values.rs and unimplemented double ended iterator 2022-05-04 09:50:27 -04:00
visualisation.rs Plumb in storage-v2 2022-08-22 21:16:47 +01:00