TL; DR:
Ab Rust 1.9, str::to_string
, str::to_owned
, String::from
, str::into
alle die gleichen Leistungsmerkmale aufweisen. Verwenden Sie, was Sie bevorzugen.
Die naheliegendste und idiomatische Weg, um eine Zeichenfolge in Scheiben schneiden (&str
) zu einem in Besitz genommenen Schnur (String
) zu konvertieren ist ToString::to_string
zu verwenden. Dies funktioniert für jeden Typ, der Display
implementiert. Dies umfasst String-Slices, aber auch ganze Zahlen, IP-Adressen, Pfade, Fehler und so weiter.
Vor Rust 1,9, die Umsetzung der str
to_string
die formatting infrastructure gehebelt. Während es funktionierte, war es Overkill und nicht der performanteste Weg.
Eine leichtere Lösung war die Verwendung ToOwned::to_owned
, die für Typen implementiert ist, die ein "geliehenes" und ein "Eigentum" -Paar haben. Es ist implemented in an efficient manner.
Eine andere leichte Lösung ist die Verwendung Into::into
, die From::from
nutzt. Dies ist auch implemented efficiently.
Für Ihren spezifischen Fall das Beste, was zu tun ist, ein &str
, wie thirtythreeforty answered zu akzeptieren. Dann müssen Sie Zero Allokationen tun, was das beste Ergebnis ist.
Im Allgemeinen werde ich wahrscheinlich into
verwenden, wenn ich eine zugewiesene Zeichenfolge erstellen muss - es ist nur 4 Buchstaben lang^_ ^. Wenn ich Fragen zu Stack Overflow beantworte, verwende ich to_owned
, da es viel offensichtlicher ist, was passiert.
also welche für "fdsfd" zu verwenden? – imatahi
@imatahi aktualisiert. – Shepmaster