This is about moving rust's borrow checker into the type system. I don't follow the details (not a rust dev) but the top level plan of doing static checks in the static type system sounds right. Has interesting links to related projects.
shared(x.a.b.c)
or: mut(y.d.e.f)
That makes it possible to pass around a reference with the promise that the callee will only access a subset of the fields of whatever referenced type you're talking about, as well as other things.Superficially it looks very much like what I did in Regent [1] though I am sure the details differ widely.
Currently structs are allowed to borrow from any data outside of them, but not from any of their own fields. Rust doesn't want to have move constructors, and borrowing from inline fields can't be safe, but borrowing from heap-allocated data owned by the same struct should be possible, and currently there's no non-hacky way to express that.