#auto-merge #json #operations #received #concurrently #crdt #structure

已下架 automerge-rs

Rust语言的Automerge复制JSON数据类型的实现

0.0.2 2019年12月28日
0.0.1 2019年12月28日

#8 in #received

MIT许可证

47KB
1K SLoC

Automerge

这是Automerge在Rust中的一个非常早期、还在进行中的实现。目前它仅实现了接收到的操作的可读视图,并且几乎没有测试其是否正常工作。其目标是

  • 完整的读写复制
  • no_std支持,使其易于在WASM环境中使用
  • 基于模型的测试以确保与JS库的兼容性

如何使用

您需要将Automerge中的更改导出为JSON,而不是使用Automerge.save使用的编码。所以首先这样做

const doc = <your automerge document>
const changes = Automerge.getHistory(doc).map(h => h.change)
console.log(JSON.stringify(changes, null, 4))

现在您可以这样将这些更改加载到Automerge中

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);
}

依赖项

~0.7–1.5MB
~34K SLoC