[Verse 1] When you create a variable in Rust today The compiler needs to know how long it will stay From birth until the end, when memory's freed A lifetime annotation is what you need [Chorus] Lifetimes keep your data alive Make sure references survive Apostrophe a, apostrophe b Telling Rust what lives where and when to be free No dangling pointers, no memory leak Lifetimes are the safety that we seek [Verse 2] Sometimes the compiler gets confused about Which reference lives longer without a doubt That's when you help with lifetime names so clear Apostrophe static means it lives all year [Chorus] Lifetimes keep your data alive Make sure references survive Apostrophe a, apostrophe b Telling Rust what lives where and when to be free No dangling pointers, no memory leak Lifetimes are the safety that we seek [Verse 3] In functions with parameters you might find Multiple references that are intertwined The output lifetime matches the input's span Following the rules of the lifetime plan [Bridge] Three simple rules to remember well First rule says that each param gets its own spell Second rule says if there's just one input parameter The output gets the same lifetime character Third rule says when self is in the mix Its lifetime to the output always sticks [Chorus] Lifetimes keep your data alive Make sure references survive Apostrophe a, apostrophe b Telling Rust what lives where and when to be free No dangling pointers, no memory leak Lifetimes are the safety that we seek [Outro] Most of the time Rust figures it out But when it can't, don't worry or doubt Just add those lifetime annotations with care And your references will live everywhere they dare
← Peek Don't Take (The Memory Dance) | Blueprint Awakening →