Essentially, being a kind of vector, a string can be created the same way by combining new and push; however, because this is really inconvenient, a string, which is an owned chunk of memory, can be created from a string slice (&str), which is either a borrowed string or a literal. Both of the ways to do it, that are shown in this recipe, are equivalent:
let s = "Hello".to_string();
println!("s: {}", s);
let s = String::from("Hello");
println!("s: {}", s);
Out of pure personal preference, we will use the first variant.
Before Rust 1.9, to_owned() was the fastest way to create a string. Now, to_string() is equally performant and should be preferred, because it offers more clarity over what is done. We mention this because many old tutorials and guides have not been updated since then, and still use to_owned().
All strings in Rust are valid Unicode in UTF-8 encoding. This can lead to some surprises, as a character...