@Mark_Simulacrum has a nice blog post exploring how inband lifetimes (Rust 2018 edition feature) look from the perspective of a specific rustc crate. I’ve not played with them myself just yet, but my initial reaction is they don’t bring enough benefit to the table and potentially create more confusion and/or leave room to make code harder to read/follow, as Mark’s examples show.
I’ve always liked that Rust is very explicit in its type signatures, for the most part (lifetime elision being the opposite of that, but I’ve found that to be mostly striking the right balance). I’m slightly worried that the language is being morphed in directions that add extra optionality to how things are written, hide a bit more things, and in general, seem to be optimized for writing code (as opposed to reading). I’ll reserve stronger judgment until I actually play with this myself, however.
Curious what others think.