Hacker News new | ask | show | jobs
by Maxatar 174 days ago
Lifetimes are the input to the borrow checker, so it doesn't make much sense to say you have never been bothered by the borrow checker but you are bothered by lifetimes.
2 comments

Due to lifetime elision you can mostly skip lifetimes if you leave a bit of performance on the table.
How does lifetime elision affect performance? I thought the compiler just inferred lifetimes that you would have had to manually annotate. Naively, it seems to me that the performance should be identical.
Strictly speaking, elision just adds lifetimes based on common patterns, so yes, it wouldn't directly affect performance.

I believe your parent is implying that if you skip using a lifetime and do something else instead to make it easier, that may be less performant.

Exactly.

Cloning values, collecting iterators into Vecs and then continue the transformation rather than keeping it lazy all the way through. Skipping structs/enums with references.

I think his point is the lifetime you’d put there is identical to the lifetime that is inferred/elided. So there is literally no difference.
I thought they meant the case where you go "ugh, I don't want to write a lifetime here" and then change your code, because you have to. If you don't have to, then yes, there's literally no difference.
Ah, that's a fair point. In that case then yes, I have been bothered by the borrow checker very much indeed lol.