# `serde_indextree` Serializing `indextree` structure. ## Version support | `indextree` version | `serde_indextree` version | |---------------------|---------------------------| | 3.3.x | 0.1.x | | 4.0.x | 0.2.x | ## Usage `serde_indextree` provides two struct: `Node` for serializing a node and its descendants, `SiblingNodes` for serializing a node and its siblings in sequence. ```rust use indextree::Arena; use serde::Serialize; use serde_indextree::Node; use serde_json::to_string_pretty; #[derive(Serialize)] struct HtmlElement { tag: &'static str } // // // // // //

//

// // let arena = &mut Arena::new(); let a = arena.new_node(HtmlElement { tag: "html" }); let b = arena.new_node(HtmlElement { tag: "head" }); a.append(b, arena); let c = arena.new_node(HtmlElement { tag: "title" }); b.append(c, arena); let d = arena.new_node(HtmlElement { tag: "body" }); a.append(d, arena); let e = arena.new_node(HtmlElement { tag: "h1" }); d.append(e, arena); let f = arena.new_node(HtmlElement { tag: "h2" }); d.append(f, arena); println!("{}", to_string_pretty(&Node::new(a, arena)).unwrap()); // { // "tag": "html", // "children": [ // { // "tag": "head", // "children": [ // { // "tag": "title" // } // ] // }, // { // "tag": "body", // "children": [ // { // "tag": "h1" // }, // { // "tag": "h2" // } // ] // } // ] // } ``` ## Customization Unfortunately, `serde_indextree` doesn't come up with any customization. If you want to rename field names or anything, just copy the entire code (only 40+ lines) and modify it at your wish. ## License MIT