1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
//! # XTree //! XTree is a general purpose tree data structure. //! #### Homepage //! [crates.io](https://crates.io/crates/xtree) //! #### Documentions //! [docs.rs](https://docs.rs/xtree/) //! #### Sources //! [github](https://github.com/xstater/xtree) //! ## Construct a tree //! ``` //! extern crate xtree; //! use xtree::*; //! let tree = //! tr!(1) //! / (tr!(2) //! / tr!(3) //! / tr!(4)) //! / tr!(5); //! ``` //! It will construct a tree like below //! ``` //! // 1 //! // / \ //! // 2 5 //! // / \ //! // 3 4 //! ``` //! ## Depth-First iterate a tree //! ``` //! # extern crate xtree; //! # use xtree::*; //! # let tree = //! # tr!(1) //! # / (tr!(2) //! # / tr!(3) //! # / tr!(4)) //! # / tr!(5); //! for value in tree.df_iter(){ //! print!("{} ",value); //! } //! ``` //! It will print ```1 2 3 4 5``` in console. //! ## Breadth-First iterate a tree and Change the value //! ``` //! # extern crate xtree; //! # use xtree::*; //! # let mut tree = //! # tr!(1) //! # / (tr!(2) //! # / tr!(3) //! # / tr!(4)) //! # / tr!(5); //! for value in tree.bf_iter_mut(){ //! *value += 1; //! print!("{} ",value); //! } //! ``` //! It will print ```2 3 6 4 5``` in console. //! ## Freely visit node with Cursor //! ``` //! # extern crate xtree; //! # use xtree::*; //! # let tree = //! # tr!(1) //! # / (tr!(2) //! # / tr!(3) //! # / tr!(4)) //! # / tr!(5); //! let mut cursor = tree.cursor(); //! ``` //! create a read-only cursor to root node. //! ``` //! # extern crate xtree; //! # use xtree::*; //! # let tree = //! # tr!(1) //! # / (tr!(2) //! # / tr!(3) //! # / tr!(4)) //! # / tr!(5); //! # let mut cursor = tree.cursor(); //! cursor.move_child(0); //! ``` //! move this cursor to the first child node. //! ``` //! # extern crate xtree; //! # use xtree::*; //! # let tree = //! # tr!(1) //! # / (tr!(2) //! # / tr!(3) //! # / tr!(4)) //! # / tr!(5); //! # let mut cursor = tree.cursor(); //! # cursor.move_child(0); //! println!("{}",cursor.current()); //! ``` //! get the value of which it pointing now.<br> //! it will print ```2``` in console. //! ## Advanced usage //! [More exmples](https://github.com/xstater/xtree/tree/master/examples) mod tree; mod cursor; mod df_iter; mod bf_iter; mod children_iter; pub use tree::Tree; pub use cursor::{Cursor,CursorMut}; pub use df_iter::*; pub use bf_iter::*; pub use children_iter::{ChildrenIter,ChildrenIterMut};