-1
votes

Pourquoi le compilateur de rouille peut-il incliner des types sur des lignes séparées mais non si combinées en une seule ligne?

Pourquoi cela est-il autorisé: xxx pré>

mais pas ceci: p> xxx pré>

Il résulte de l'erreur: p>

(expression)(suffix)


0 commentaires

3 Réponses :


0
votes

Vous utilisez le Recueillir < / Code> Méthode sur itérateur nécessitant un "type" pour savoir ce qu'il devrait collecter.

En outre, vous n'avez pas à collecter afin d'extraire le premier jeton xxx

si vous souhaitez utiliser votre deuxième exemple (inefficace), vous pouvez l'atteindre. Utilisation de la syntaxe turbofish xxx

Aire de jeu


0 commentaires

3
votes

Le premier extrait, xxx pré>

dit de collecter un itérateur dans un vecteur (de & str code> s), puis affectez l'élément à l'index 1 code> à valeur code> (qui serait un & str code>). Notez que la première valeur code> code> est ombrée par la seconde (elles ont des types différents, vous devez donc le faire si vous voulez qu'ils ont le même nom). P>

dû en partie à l'annotation de type, la version à une seule ligne indique quelque chose de différent. P>

let value = payload.split("=").collect::<Vec<_>>()[1];


0 commentaires

0
votes

Votre annotation de type devient invalide dans le deuxième exemple. Ce que vous voulez, c'est ceci: xxx

Lien de jeux de jeux de rouille

qui peut être simplifié à ceci: xxx

La raison pour laquelle vous devez être explicite est parce qu'un Itérateur peut être collecté dans une douzaine de types de collecte différents et le compilateur ne peut pas deviner à laquelle vous voulez.


0 commentaires