basic/
basic.rs

1use std::{error::Error, sync::Arc};
2
3use yrs_tree::{Tree, TreeUpdateEvent};
4
5fn main() -> Result<(), Box<dyn Error>> {
6    let doc = Arc::new(yrs::Doc::new());
7    let tree = Tree::new(doc.clone(), "test");
8    let root = tree.root();
9
10    let _sub = tree.on_change(|e| {
11        let TreeUpdateEvent(tree) = e;
12        println!("{}", tree);
13    });
14
15    println!("Add 1 to ROOT");
16    let node1 = root.create_child_with_id("1")?;
17    println!("Add 2 to ROOT");
18    let node2 = root.create_child_with_id("2")?;
19    println!("Add 3 to 1");
20    let node3 = node1.create_child_with_id("3")?;
21    println!("Add 4 to 2");
22    let node4 = node2.create_child_with_id("4")?;
23
24    println!("Move 3 to 2, index 0");
25    node3.move_to(&node2, Some(0))?;
26
27    println!("Move 1 after 2");
28    node1.move_after(&node2)?;
29
30    println!("Move 4 before 3");
31    node4.move_before(&node3)?;
32
33    Ok(())
34}