3 ms·
It's because you don't have a String to begin with, just two const memory values(which most of the time are baked into the program binary in C/C++, not sure abo
by vvanders 10y ago
It's because you don't have a String to begin with, just two const memory values(which most of the time are baked into the program binary in C/C++, not sure about Rust).
- danieldk 10y agowhich most of the time are baked into the program binary in C/C++, not sure about Rust Pretty much the same, string literals are of type &'static str, which is a string slice with a static lifetime. Since literals are not `mut`, you cannot mutate them.
- vvanders 10y agoYeah, semantically you're right. I'm talking about actual binary representation. Some systems/runtimes copy them to the heap/etc while others let you reference the actual memory in the loaded binary. Back when I did more embedded stuff we cared since it could increase your runtime memory by a non-trival amount depending on what the platform did.
- steveklabnik 10y agoIn Rust's case, to be clear, they're stored in .rodata. That's where the &'static str points to. The auto copy to the heap behavior is controversial, desired by many for ergonomic reasons, disliked by others for implicit heap allocation. We'll see if it gets added in the future or not!
- vvanders 10y agoYeah, you'd find me in the latter camp for sure :). Thanks for the details, it's appreciated.
- deleted 10y ago[deleted]