1. The features are unused and should be removed. Otherwise can't use stable Rust. 1. I tend to avoid trait bounds on types (`enum` / `struct`) and only put them on the functions that really need it. Technically, `depth` doesn't need `PartialEq`, so I might split the `impl` block into different pieces. 1. Prefer `where` clauses for longer trait bounds. I just use them all the time; allowing ; 1. Spaces after `:`. 1. Accept `&Tree` for `depth`; there's no need to take ownership. 1. Return a `usize` instead of `i32` (depth is conceptually limited by RAM) and there's no way it can be negative. 1. Use `println!` instead of `print`; you want newlines. **Optional** 1. Instead of taking ownership of the tree to insert into it, accept a mutable reference. Otherwise, there are many deallocations / allocations. **Questions** Is is acceptable to insert the same value twice?