# Treelike This crate tries to provide a common trait for all kinds of trees. Two reasons for that: ## Interoperability Using a common trait allows third parties to switch tree implementations seamlessly. It also enables further abstractions to be built over for trees. ## Automation If you are implementing a tree, `Treelike` only requires you to implement two methods on your nodes, `content` to return its contents and `children` to list its children. Many kinds of traversals and searches are then provided for free. I found myself implementing the same methods over and over on different trees, so that is my main motivation. # no_std This crate tries to stay no_std compatible, but provides more functionality if allocations are available. The relevant types and methods contain a no_std section to discuss functionality and limitations. # Contributing Please symlink the hooks to your local .git/hooks/ directory to run some automatic checks before committing. ln -s ../../hooks/pre-commit .git/hooks/ Please install rustfmt and cargo-sync-readme so these checks can be run. rustup component add rustfmt cargo install cargo-sync-readme Please execute `cargo-sync-readme` when you change the top-level-documentation. Please run `cargo fmt` whenever you change code. If possible configure your editor to do so for you.