A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
src | ||
tests | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE | ||
README.md |
Automerge
This is a very early, very much work in progress implementation of automerge in rust. At the moment it barely implements a read only view of operations received, with very little testing that it works. Objectives for it are:
- Full read and write replication
no_std
support to make it easy to use in WASM environments- Model based testing to ensure compatibility with the JS library
How to use
You'll need to export changes from automerge as JSON rather than using the encoding that Automerge.save
uses. So first do this:
const doc = <your automerge document>
const changes = Automerge.getHistory(doc).map(h => h.change)
console.log(JSON.stringify(changes, null, 4))
Now you can load these changes into automerge like so:
extern crate automerge;
fn main() {
let changes: Vec<automerge::Change> = serde_json::from_str("<paste the changes JSON here>").unwrap();
let document = automerge::Document::load(changes).unwrap();
let state: serde_json::Value = document.state().unwrap();
println!("{:?}", state);
}