Yes, the use of rf should make the borrowing alive at that point. However, the rule says the borrowing is killed so that the borrowing is not considered relevant when there is a shallow write to i because rf is a borrowing to the i whose prefix is itself.
The two examples differ in a crucial detail – the first one (that does not compile) assigns to the referent of the reference, whereas the second one merely reassigns the reference so it points to a different value.
The next paragraph in fact talks about exactly this issue:
if this is an assignment lv = <rvalue> , then any loan for some path P of which lv is a prefix is killed, where P is not lv.
which can clarify the note. Otherwise, the "next section" still cannot interpret the note because the relevant borrowings are only those that are in-scope
As you can see, it works in two steps. First, we enumerate a set of in-scope borrows that are relevant to lvalue -- this set is affected by whether this is a "shallow" or "deep" action, as will be described shortly. Then, for each such borrow, we check if it conflicts with the action (i.e.,, if at least one of them is potentially writing), and, if so, we report an error.
A killed borrowing is not considered in the scope.
Ok. So, an lvalue is indeed a prefix of itself? The distinct between my case and the following case
let list: &mut List<T> = ...;
let v = &mut (*list).value;
list = ...; // <-- assignment
is that there is a relevant borrowing at the point of the assignment in my case while there is no relevant borrowing in the assignment point above.
For shallow access, bullet 1 and bullet 2 says
there is a loan for the path lvalue
there is a loan for some prefix of the path lvalue;
which means ('a, mut, i) is a relevant borrowing. For the above case, there is no loan for list according to the bullet 1, no loan for list(prefix of list) according to the bullet 2, and no loan for a path of which list is a shallow prefix according to bullet 3
I believe that's all correct. The second bullet point considers one direction of nesting and indirection and the third considers the opposite direction. The first is just for clarity I think (and overlaps with both directions).