basic/
basic.rs

1use std::{error::Error, sync::Arc};
2
3use yrs_tree::{NodeApi, Tree, TreeEvent};
4
5fn main() -> Result<(), Box<dyn Error>> {
6    let doc = Arc::new(yrs::Doc::new());
7    let tree = Tree::new(doc.clone(), "test")?;
8
9    let _sub = tree.on_change(|e| match e {
10        TreeEvent::TreeUpdated(tree) => {
11            println!("{}", tree);
12        }
13        TreeEvent::TreePoisoned(_tree, err) => {
14            println!("Tree is poisoned: {}", err);
15        }
16    });
17
18    println!("Add 1 to ROOT");
19    let node1 = tree.create_child_with_id("1")?;
20    println!("Add 2 to ROOT");
21    let node2 = tree.create_child_with_id("2")?;
22    println!("Add 3 to 1");
23    let node3 = node1.create_child_with_id("3")?;
24    println!("Add 4 to 2");
25    let node4 = node2.create_child_with_id("4")?;
26
27    println!("Move 3 to 2, index 0");
28    node3.move_to(&node2, Some(0))?;
29
30    println!("Move 1 after 2");
31    node1.move_after(&node2)?;
32
33    println!("Move 4 before 3");
34    node4.move_before(&node3)?;
35
36    println!("Set data on 1: my_key = my_value");
37    node1.set("my_key", "my_value")?;
38
39    let val = node1.get_as::<String>("my_key")?;
40    println!("Get data from 1: my_key = {}", val);
41
42    Ok(())
43}