Ich kann keinen Code kompilieren, der einen Typ von einer Ganzzahl in eine Zeichenfolge konvertiert. Ich führe ein Beispiel aus dem Tutorial von Rust for Rubyists aus, das verschiedene Typkonvertierungen enthält, wie z.
"Fizz".to_str()
und num.to_str()
(wo num
ist eine ganze Zahl).
Ich denke, die Mehrheit (wenn nicht alle) dieser to_str()
Funktionsaufrufe sind veraltet. Wie kann eine Ganzzahl derzeit in eine Zeichenfolge konvertiert werden?
Die Fehler, die ich bekomme, sind:
error: type `&'static str` does not implement any method in scope named `to_str`
error: type `int` does not implement any method in scope named `to_str`
string
int
type-conversion
rust
user3358302
quelle
quelle
to_string()
Methode, die aber zurückgibtString
und keine Literalzeichenfolge.to_str()
es wäre ein anderer Rückgabewert, den ich verwenden werdeto_string()
&'static str
, dh einen Zeichenfolgenschnitt mit einer statischen Lebensdauer, der mit dynamisch erstellten Daten nicht abgerufen werden kann . Sie können sie nur mit Zeichenfolgenliteralen erstellen.to_str
mich verwirrt (was, wie Sie sagten, aus Gründen der Klarheit umbenannt wurde), weil ich dachte, es würde ein String-Slice anstelle einesString
Objekts zurückgegeben.Antworten:
Verwendung
to_string()
( laufendes Beispiel hier ):let x: u32 = 10; let s: String = x.to_string(); println!("{}", s);
Du hast recht;
to_str()
wurde aus Gründen derto_string()
Konsistenz in Rust 1.0 umbenannt, da jetzt eine zugewiesene Zeichenfolge aufgerufen wirdString
.Wenn Sie irgendwo ein String-Slice übergeben müssen, müssen Sie eine
&str
Referenz von erhaltenString
. Dies kann mit&
einem Deref-Zwang geschehen :let ss: &str = &s; // specifying type is necessary for deref coercion to fire let ss = &s[..]; // alternatively, use slicing syntax
Das Tutorial, mit dem Sie verlinkt haben, scheint veraltet zu sein. Wenn Sie an Strings in Rust interessiert sind, können Sie das Kapitel über Strings in The Rust Programming Language lesen .
quelle