Три вещи: (1) передать систему субъекта и материализатор в ваш метод (явным образом или в виде неявных параметров) вместо создания их внутри метода, (2) использовать Sink.seq
и (3) использовать toMat
иKeep.right
для получения материализованного значения Sink
(to
сохраняет материализованное значение Source
):
val result: Future[Seq[String]] =
FileIO.fromPath(...)
.via(Framing.delimiter(ByteString("\n"), 256, true))
.map(_.utf8String)
.toMat(Sink.seq)(Keep.right)
.run()
В качестве альтернативы, сокращение для использования toMat
и Keep.right
is runWith
:
val result: Future[Seq[String]] =
FileIO.fromPath(...)
.via(Framing.delimiter(ByteString("\n"), 256, true))
.map(_.utf8String)
.runWith(Sink.seq)