That and rust macros. Does anyone read macros? Luckily one can write rust without lifetimes and macros it is just a pain. Just not as much of a pain as using them.
Discussion
I use macros where typing it all out would be crazy. But the macro language isn't super easy to read.
If rust devs didn't care about the usually *tiny* cost of copying things, they wouldn't use lifetimes. But they want perfection. I'm sick in the head that way myself. Lucky for us newer compilers are much more able to figure out the lifetimes and we can elide them.
I will freely admit that I don't use lifetimes because I haven't taken the time to understand them yet. It never makes sense to me. Everything the compiler complains about seems to want a static lifetime.
The basics are easy to understand, but what is tricky is interpreting what the compiler is actually saying. The basics are just that if you borrow something, you must ensure that the owning variable stays alive during the entire lifetime of the borrow.... otherwise it will be freed and the borrowing reference will point at memory that isn't safe anymore. But the details about how to do this, and what the fuck the compiler just said, that is where the nightmare arises.
I have to admit I've avoided using Rc and RefCell and gone straight to Arc and RwLock instead because those work in more cases and I can't be bothered with the single thread cases anymore.
And I usually only have to reference lifetimes if a structure has borrowed data. Borrowed parameters in functions giving borrowed return values don't need explicit lifetimes anymore.
Yes! Arc all the things! Because you know whatever you want to pass contains an object from a library that does not impl clone.