Ce face String::from
String::from("Iași") copiază textul literal într-un String nou, pe care îl poți modifica și păstra. Funcționează prin trait-ul From, implementat pentru &str, char, &String, Box<str>, Cow<str> și altele.
Rezultatul este același cu "Iași".to_string(), "Iași".to_owned() sau "Iași".into() (când tipul țintă este cunoscut). Alege forma care se citește cel mai bine; între ele nu există diferență de viteză notabilă.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul sursă: &str, char, &String etc. Se copiază; sursa rămâne neschimbată. |
Ce returnează
Un String nou cu același conținut.
Exemple
Exemplul 1: Patru moduri de a obține același String
fn main() {
let a = String::from("Brașov");
let b = "Brașov".to_string();
let c = "Brașov".to_owned();
let d: String = "Brașov".into();
println!("{a} {b} {c} {d}");
println!("toate egale: {}", a == b && b == c && c == d);
}
Rezultat
Brașov Brașov Brașov Brașov
toate egale: true
Exemplul 2: Din char și din alt String
fn main() {
let litera = String::from('ț');
let original = String::from("Galați");
let copie = String::from(&original); // copiază, original rămâne valid
println!("{litera} ({} octeți)", litera.len());
println!("{original} / {copie}");
}
Rezultat
ț (2 octeți)
Galați / Galați
Greșeli frecvente
- Crezi că
let s: String = "Iași";merge. Un literal are tipul&str; conversia înStringtrebuie cerută explicit cuString::from,to_stringsauinto.
Comenzi înrudite
String: Textul care îți aparține și se poate modifica: UTF-8, pe heap, crește singur. Diferența față de &str.String::new: Creează un String gol, fără să aloce memorie; textul se adaugă apoi cu push_str sau push.str::to_string: Copiază un &str într-un String nou, deținut. to_string și to_owned dau același rezultat.From: Trait-ul pentru conversii care nu pot eșua: Tinta::from(x). Implementându-l, primești gratuit și x.into().