私は Akka Streams を初めて使用しますが、それを使用して無限のソースからの順列を探したい場合があります。有限のソースを使用した単純化された例は、次のようになります。
val future = Source(1 to 100)
.map { i => if (i % 20 == 0) println(i); i }
.filter(_ == 42)
.runWith(Sink.fold[Int, Int](0)(Keep.right))
この例の出力は次のとおりです。
20
40
60
80
100
ソースが通過しても問題ないことは明らかです42
が、結果を取得する前にストリーム全体を使い果たしたくありません。
val result: Int = Await.result(future, 1.second)
result should be(42)
質問は、探しているものを見つけたときにストリームを終了するにはどうすればよいですか?