Lifetimes: Documentation

Hmm, I went from C# full time to C++ for a few months, to Rust until now (about 3 months), and what I have found the most useful is just trying to avoid them. It's usually pretty easy to understand the basics of lifetimes, (scope 'a contains all variables with a &'a reference etc.), but sometimes, as with the previous thread, lifetimes come back to bite you in the butt. Just try to solve a problem without using lifetimes initially, and then, if unsolvable or too complicated or necessary to use Rc types, try to think of a way to solve it with lifetimes, which is usually the way to go.
For example, with your previous thread, I would have gone with either a restraint for 'a to be 'a: 'static, or have used a String. And for the add_child method, I would have gone with something like so:

fn add_child(&mut self, child:Node<'a>) -> Node

and force Node to implement clone. This allows for what I presumed you were going for and allows for this:

my_node.add_child(/**/)
       .add_child(/**/)
       .add_child(/**/)

etc.