This repo contains tests for otto
. otto
enables any boring Rust data structure (without Rc
, RefCell
etc.) to be used as a replicated data type. It supports achieving convergence via multiple approaches, including:
Crdt<T>
to leverage operation-based CRDT techniques.insert_and_rebase_forward
, insert_and_rebase_back
and converge
to leverage OT techniques with a synchronising server.It also supports combining these approaches to synchronise a mix of clients using both CRDT and OT techniques.
RichText
) and operations (e.g. sort
and group_by
operations on List<T>
)List<(u64, List<u8>)>
)Data type | Operations supported |
---|---|
Map<K, V> |
insert(K, V) , delete(K) , map_at(K, V::Instr) |
Set<T> |
insert(T) , delete(T) |
List<T> |
insert_at(usize, T) , delete_at(usize) , map_at(usize, T::Instr) |
Register<T> |
set(T) , map(T::Instr) |
(A, B, ...) |
map_a(A::Instr) , map_b(B::Instr) , ... |
#[derive(State)] for arbitrary structs and enums |
map_field_a(A::Instr) , map_field_b(B::Instr) , ... |
bool u8 u16 u32 u64 u128 i8 i16 i32 i64 i128 f32 f64 char usize isize |
- |
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.