def compose_result( self, function: Callable[ [Result[_ValueType, _ErrorType]], Kind3[ RequiresContextFutureResult, _NewValueType, _ErrorType, _EnvType, ], ], ) -> RequiresContextFutureResult[_NewValueType, _ErrorType, _EnvType]: """ Composes inner ``Result`` with ``ReaderFutureResult`` returning func. Can be useful when you need an access to both states of the result. .. code:: python >>> import anyio >>> from returns.context import ReaderFutureResult, NoDeps >>> from returns.io import IOSuccess, IOFailure >>> from returns.result import Result >>> def count( ... container: Result[int, int], ... ) -> ReaderFutureResult[int, int, NoDeps]: ... return ReaderFutureResult.from_result( ... container.map(lambda x: x + 1).alt(abs), ... ) >>> success = ReaderFutureResult.from_value(1) >>> failure = ReaderFutureResult.from_failure(-1) >>> assert anyio.run( ... success.compose_result(count), ReaderFutureResult.no_args, ... ) == IOSuccess(2) >>> assert anyio.run( ... failure.compose_result(count), ReaderFutureResult.no_args, ... ) == IOFailure(1) """ return RequiresContextFutureResult( lambda deps: FutureResult( _reader_future_result.async_compose_result( function, self, deps, ), ), )
def bind_async( self, function: Callable[ [_ValueType], Awaitable[ Kind3[ RequiresContextFutureResult, _NewValueType, _ErrorType, _EnvType, ], ], ], ) -> RequiresContextFutureResult[_NewValueType, _ErrorType, _EnvType]: """ Composes this container with a async function returning the same type. .. code:: python >>> import anyio >>> from returns.context import RequiresContextFutureResult >>> from returns.io import IOSuccess, IOFailure >>> async def function( ... number: int, ... ) -> RequiresContextFutureResult[str, int, int]: ... return RequiresContextFutureResult.from_value(number + 1) >>> assert anyio.run( ... RequiresContextFutureResult.from_value(1).bind_async( ... function, ... ), ... RequiresContextFutureResult.no_args, ... ) == IOSuccess(2) >>> assert anyio.run( ... RequiresContextFutureResult.from_failure(1).bind_async( ... function, ... ), ... RequiresContextFutureResult.no_args, ... ) == IOFailure(1) """ return RequiresContextFutureResult( lambda deps: FutureResult(_reader_future_result.async_bind_async( function, self, deps, )), )