In the book chapter on Rc, it doesn't mention that it IS possible to mutate an Rc, if (dynamically) the reference count is 1. I only just discovered this.
So, for example if you want to concatenate two Rc strings, you can use Rc::get_mut to append to the existing value if possible, or "start from scratch" if it's not possible ( the first string is actually shared ).
For a long time I believed that an Rc simply could not be mutated, so this was a bit of a revelation for me. Are there any other clever Rust features you might not know about after reading "the book"?
It's not really a "rust feature", it's a feature of the Rc type. And yes, there are lots of (most really) things not talked about in the book. (just as an example, most of the iterator API isn't in the book)
After reading the book, you should have a good grasp of the language. Not a complete knowledge of the standard library.
The Book is not a comprehensive, detailed reference manual. It is an introductory turorial. You will encounter many (and I mean many) other clever techniques by browsing the std documentation (for that, visit std - Rust) and by reading lots of real-life code written by experienced Rust programmers.