I'm glad that this guide emphasizes avoiding pointers by default. One of the emerging trends that we've noticed for new users is to allocate on the heap far too often when they could be allocating on the stack instead. I'm also glad that this emphasizes the return-value optimization that Rust uses to make returning a pointer unnecessary. However, Steve, I wish you hadn't mentioned managed pointers at all. :P Overuse…
If we make str default to managed rather than ~str, and [] default to managed rather than ~[], most of the weird pointer complaints will go away.
Edit: Darn, what was I thinking? I meant owned pointer.
Strings or vectors are owned in most cases. That makes Rust code littered with ~str or ~[], especially when having vector of strings or vectors of vectors. ~[~[~str]]. If we make str and [] default to owned, the code would be much cleaner.
That means move the syntax for fixed vec to something else, like ![1,2,3]