Strings Basics
7 examples - 5 basic, 2 intermediate - for String and &str.
Search across all documentation pages
7 examples - 5 basic, 2 intermediate - for String and &str.
&str Literalfn main() {
let s: &str = "hello";
println!("{s}");
}&'static str for literalsString Ownedfn main() {
let mut s = String::from("hello");
s.push_str(" world");
}&strfn greet(name: &str) { println!("Hello, {name}"); }
fn main() { greet("Ada"); greet(&String::from("Bob")); }&str for flexibilitypush and push_strlet mut s = String::new();
s.push('!');
s.push_str("ok");len vs chars().count()let s = "🦀";
assert_eq!(s.len(), 4); // bytes
assert_eq!(s.chars().count(), 1);Related: UTF-8 & Indexing
format!let msg = format!("{} {}", "hello", 42);into() conversionslet owned: String = "x".into();
let slice: &str = &owned;Related: Strings Best Practices
Stack versions: This page was written for Rust 1.97.0 (edition 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, and Polars 0.46+.
Reviewed by Chris St. John·Last updated Jul 16, 2026