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}