capypad
0 day streak
rust / beginner
Snippet

Understanding String and &str

Rust has two main string types: String for owned, growable strings and &str for borrowed string slices. String::from creates an owned string from a string literal. Using &str is more efficient when you don't need ownership.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
fn main() {
let greeting = String::from("Hello");
let slice = &greeting[..4];
println!("Full: {}", greeting);
println!("Slice: {}", slice);
let s1 = "literal string";
let s2: &str = s1;
println!("s1: {}, s2: {}", s1, s2);
}
Breakdown
1
let greeting = String::from("Hello");
Creates an owned String type, heap-allocated and mutable
2
let slice = &greeting[..4];
Creates a borrowed &str slice from the String, borrowing first 4 characters
3
let s1 = "literal string";
String literals are &str by default, stored in binary
4
let s2: &str = s1;
Slices can be assigned without copying, just borrowing