Loading collection data...
Collections are a way for you to organize kata so that you can create your own training routines. Every collection you create is public and automatically sharable with other warriors. After you have added a few kata to a collection you and others can train on the kata contained within the collection.
Get started now by creating a new collection.
A
'static
reference lasts for the entire duration of the program, even longer thanmain
, which makes sense because we've literally typed it into the source code, so the string will always be the same.The reason it's necessary is less intuitive, but important for understanding the rust lifetime system as a whole. When we return a reference, we're promising that something will actually be there, but when our function ends everything will be dropped! This is why solutions that return a
String
work,String
s are just fancy pointers, so we've allocated a place for ourString
and it will be dropped whenever the caller drops it.With that in mind, how come a
'static
reference actually works, what can it even be referencing? Well, it's a little bit tricky and actually references a string embedded in the program itself!Godbolt is really helpful here, you can literally see
"hello world"
here: https://godbolt.org/z/xGhWW6MbqIn the string version, though, it's nowhere to be found: https://godbolt.org/z/14vevMYco
In a nutshell, we use
'static
because it tells the compiler that the string lasts for the entire duration of the program, which is possible because it's embedded in the program, and is preferable because it lets us avoid a heavyString
for such a simple task.Why 'static? :)