Meilleur moyen pour concaténer des vecteurs dans la Rouille
Est-il même possible de concaténer des vecteurs de la Rouille? Si oui, est-il une manière élégante de le faire? J'ai quelque chose comme ceci:
let mut a = vec![1, 2, 3];
let b = vec![4, 5, 6];
for val in &b {
a.push(val);
}
Personne ne sait d'une meilleure façon?
Liées, en double possible: Quelle est la idiomatiques façon à ajouter une tranche de vector?
Le code dans votre question ne se compile pas.
Pouvez-vous être plus précis? Voulez-vous produire un vecteur en consommant les deux autres, ou tout simplement avoir un itérateur sur la concaténation?
Quel est le problème avec
Quelque chose de pas très pratique avec une.étendre(b) est qu'il n'a pas de retour de b, et demander un peu plus compliqué expressions des fonctions, des méthodes comme la carte.
Le code dans votre question ne se compile pas.
Pouvez-vous être plus précis? Voulez-vous produire un vecteur en consommant les deux autres, ou tout simplement avoir un itérateur sur la concaténation?
Quel est le problème avec
a.extend(b)
?Quelque chose de pas très pratique avec une.étendre(b) est qu'il n'a pas de retour de b, et demander un peu plus compliqué expressions des fonctions, des méthodes comme la carte.
OriginalL'auteur Joe Thomas | 2016-11-24
Vous devez vous connecter pour publier un commentaire.
La structure
std::vec::Vec
a la méthodeappend()
:À partir de votre exemple, le code suivant va concaténer deux vecteurs par mutation
a
etb
:Alternativement, vous pouvez utiliser
Extend::extend()
pour ajouter tous les éléments de quelque chose qui peut être transformé en un itérateur (commeVec
) pour un vecteur donné:Remarque que le vecteur
b
est déplacé au lieu d'être vidé. Si votre vecteurs contiennent des éléments qui mettent en œuvre desCopier
, vous pouvez passer une immuable référence à un vecteur deextend()
, afin d'éviter de le déplacer. Dans ce cas, le vecteurb
n'est pas modifié:OriginalL'auteur Lud