Зачем писать .to_string() при объявлении строки?
Есть хорошая статья: https://habr.com/ru/post/274485/

У строковых литералов тип &'static str. Тоесть это заимствованная ссылка на объект с неограниченным временем жизни.
А to_string возвращает уже owned строку типа std::string::String

А нужно это в данном коде, чтобы показать механику владения, что очевидно нельзя, если никто не является владельцем значений, как в случае со ссылками.

Если ты хочешь получить именно String из строкового литерала, то есть сразу несколько вариантов, включая показанный:
let a: String = String::from("a");
let b: String = "b".to_string();
let c: String = "c".into(); // или "c".into::<String>(), если не указывать тип явно.
let d: String = "d".to_owned();
https://qna.habr.com/q/1105214#answer_2097786

Раздел Strings in Rust