So the string literal is a str, but it gets turned into a String with the .into(), and then back into a str (well, &amp;str) on the same line. That seems like a lot of travelling to go a short distance.<p>Is this because args() ultimately gives you a String, and you need to get that and the string literal out of a single expression?<p>Why does args() give you String rather than str? Couldn&#x27;t command-line arguments be static more-or-less constants?<p>Would there be any way to turn the output of args straight into a &amp;str, so you didn&#x27;t need to .into() the literal?<p>Why are String and str separate types, rather than different uses of a single type? Are there any other examples of pairs of types with the same relationship? Arrays and slices? Any others? Is there something like this for maps&#x2F;dictionaries&#x2F;hashes?<p>I realise i&#x27;ve asked a lot of basic questions about strings here, and that you (and any other knowledgeable people reading this) are probably pretty tired of explaining this over and over again. I would be equally grateful for a link to some relevant documentation or whatever as for a detailed answer!