У меня есть источник source
типа Source[ByteString, Any]
и приемник sink
типа Sink[ByteString, M]
, где M
может быть Future[IOResult]
или чем-то еще. Когда я запускаю следующее:
source.runWith(sink)
Я получаю M
в результате. Я не получаю никакой другой полезной информации, указывающей, что поток был успешным. Если он гарантированно равен Future[IOResult]
, это было бы замечательно, но приемник был получен из общего класса типов, и вы не можете определить тип во время компиляции.
Однако все экземпляры класса типов должны сообщать о том, была ли операция успешной.
Или я должен обернуть материализованный тип в пользовательский, например Result[M]
, которым я могу легко манипулировать? Для этого может потребоваться новый класс типов, членами которого должны быть экземпляры M (например, вы должны указать, как Future[IOResult]
преобразуется в Result[Future[IOResult]]
. То же самое для всех возможных экземпляров M
).