akka stream で今まで Unit 型だったところに NotUsed が使われるようになっていることに気づきました。なぜ変わったのか調べたところ、 akka stream の Migration Guide 2.0.x to 2.4.x に書いてありました。
Java からも使える Unit のようなものとして akka.NotUsed
と akka.Done
が導入されたということです。 akka は Java からも使えるように設計されているので、Scala と Java で同じ型のほうが良いということなんでしょうね。生成される値に興味が無い場合に NotUsed を、完了を待つときに実際の値がないときに Done を使うとのことです。
akka.NotUsed
, akka.Done
は この pull request で追加されました。
Source, Flow, Sink で Unit/BoxedUnit が使われていた箇所は NotUsed に一括置換されたようです。 Done の方は Future の型パラメータとして Unit/BoxedUnit の代わりに使われています。