mapowanie strumienia z funkcją zwracającą przyszłość

Czasami znajduję się w sytuacji, w której mam trochęStream[X]i afunction X => Future Y, które chciałbym połączyć zFuture[Stream[Y]]i nie mogę znaleźć sposobu, aby to zrobić. Na przykład mam

val x = (1 until 10).toStream
def toFutureString(value : Integer) = Future(value toString)

val result : Future[Stream[String]] = ???

próbowałem

 val result = Future.Traverse(x, toFutureString)

co daje poprawny wynik, ale wydaje się pochłaniać cały strumień przed zwróceniem Przyszłości, która mniej lub bardziej pokonuje purpse

próbowałem

val result = x.flatMap(toFutureString)

ale to się nie kompilujetype mismatch; found : scala.concurrent.Future[String] required: scala.collection.GenTraversableOnce[?]

val result = x.map(toFutureString)

zwraca nieco dziwne i bezużyteczneStream[Future[String]]

Co powinienem tutaj zrobić, aby naprawić problemy?

Edytuj: Nie utknąłem naStream, Byłbym równie zadowolony z tej samej operacji naIterator, o ile nie zablokuje to oceny wszystkich elementów przed rozpoczęciem przetwarzania głowy

Edit2: Nie jestem w 100% pewien, że konstrukcja Future.Traverse musi przejść przez cały strumień przed zwróceniem Future [Stream], ale myślę, że tak. Jeśli nie, to sama w sobie świetna odpowiedź.

Edit3: Nie potrzebuję też, aby wynik był w porządku, wszystko jest w porządku, jeśli strumień lub iterator zwrócony jest w dowolnej kolejności.

questionAnswers(3)

yourAnswerToTheQuestion