Je suis incapable de compiler du code qui convertit un type d'un entier en une chaîne. J'exécute un exemple du didacticiel Rust for Rubyists qui a diverses conversions de type telles que:
"Fizz".to_str()
et num.to_str()
(où num
est un entier).
Je pense que la majorité (sinon la totalité) de ces to_str()
appels de fonction sont obsolètes. Quelle est la façon actuelle de convertir un entier en chaîne?
Les erreurs que je reçois sont:
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
la source
la source
to_string()
méthode mais qui retourneString
et non une chaîne littérale.to_str()
c'était une valeur de retour différente, je vais utiliserto_string()
&'static str
, c'est-à-dire une tranche de chaîne avec une durée de vie statique, ce qui est impossible à obtenir en utilisant des données créées dynamiquement. Vous ne pouvez les créer qu'à l'aide de chaînes littérales.to_str
m'a confondu (ce qui, comme vous l'avez dit, ils ont renommé pour plus de clarté) en pensant qu'elle renvoyait une tranche de chaîne au lieu d'unString
objet.Réponses:
Utilisez
to_string()
( exemple en cours d'exécution ici ):let x: u32 = 10; let s: String = x.to_string(); println!("{}", s);
Tu as raison;
to_str()
a été renomméto_string()
avant la publication de Rust 1.0 pour des raisons de cohérence car une chaîne allouée est désormais appeléeString
.Si vous devez passer une tranche de chaîne quelque part, vous devez obtenir une
&str
référence à partir deString
. Cela peut être fait en utilisant&
et une coercition déréf:let ss: &str = &s; // specifying type is necessary for deref coercion to fire let ss = &s[..]; // alternatively, use slicing syntax
Le didacticiel auquel vous avez lié semble obsolète. Si vous êtes intéressé par les chaînes dans Rust, vous pouvez consulter le chapitre sur les chaînes du langage de programmation Rust .
la source