They are not decoration on a type. They are a claim about which of two things outlives the other, and the compiler is checking the claim rather than inferring your intent.
A select! that drops a future halfway through a read leaves the buffer with half a message in it. Nothing warns you, and it reproduces under load and never in a test.
Four hundred warnings. Eleven were real, about sixty were style I agreed with, and the rest taught me which lints to turn off in the manifest and never think about again.
p50 went from 11ms to 9ms, which is noise. p99 went from 340ms to 24ms, which is the garbage collector, and it is the only number anybody on the support rota ever felt.
Inside the app, one boxed error and a question mark. At the boundary, a closed set the caller can match on, because that is where somebody has to decide what to do.
Cold build 94 seconds, incremental 3.2, and the incremental number is the only one that happens more than once a week. The debate is usually about the wrong number.
Four crates, one of which was named core and contained the things nobody could place. Merging them back took an afternoon and deleted 300 lines of re-exports.