now.
Ready? Let's get started. I hope you brought some time, because this is a
-rather lengthy post. If you are not interested in the details, you can skip
-right to section 4. If you only want to know how to help, go to section 6.
+rather lengthy post. If you are not interested in a detailed description of
+Stacked Borrows, you can skip most of this post and go right to
+[section 4](#4-differences-to-the-original-proposal). If you only want to know
+how to help, jump to [section 6](#6-evaluation-and-how-you-can-help).
## 1 Enforcing Uniqueness
reference type get retagged. On every assignment, if the assigned value is of
reference type, it gets retagged. Moreover, we do this even when the reference
value is inside the field of a `struct` or `enum`, to make sure we really cover
-all references. However, we do *not* descend recursively through references:
-Retagging a `&mut &mut u8` will only retag the *outer* reference.
+all references. (This recursive descend is already implemented, but the
+implementation has not landed yet.) However, we do *not* descend recursively
+through references: Retagging a `&mut &mut u8` will only retag the *outer*
+reference.
Retagging is the *only* operation that generates fresh tags. Taking a reference
simply forwards the tag of the pointer we are basing this reference on.
but it is nevertheless interesting and might be useful in a "lower-level MIR"
that does not permit dereferences in paths.
-## Evaluation, and How You Can Help
+## 6 Evaluation, and How You Can Help
I have implemented both the validity invariant and the model as described above
in miri. This [uncovered](https://github.com/rust-lang/rust/issues/54908) two