For building Callback objects using the Partially-Applied Type technique.
For building Callback objects using the Partially-Applied Type technique.
For example these are Equivalent:
Callback[Throwable, Throwable].empty[String] <-> Callback.empty[Throwable, String]
Contravariant type class instance of Callback for Cats.
Creates an empty Callback, a callback that doesn't do
anything in onNext
and that logs errors in onError
with
the provided monix.execution.UncaughtExceptionReporter.
Given a Callback wraps it into an implementation that
calls onSuccess
and onError
asynchronously, using the
given scala.concurrent.ExecutionContext.
Given a Callback wraps it into an implementation that
calls onSuccess
and onError
asynchronously, using the
given scala.concurrent.ExecutionContext.
The async boundary created is "light", in the sense that a TrampolinedRunnable is used and supporting schedulers can execute these using an internal trampoline, thus execution being faster and immediate, but still avoiding growing the call-stack and thus avoiding stack overflows.
Turns Either[Throwable, A] => Unit
callbacks into Monix
callbacks.
Turns Either[Throwable, A] => Unit
callbacks into Monix
callbacks.
These are common within Cats' implementation, used for
example in cats.effect.IO
.
Returns a Callback instance that will complete the given promise.
Turns Try[A] => Unit
callbacks into Monix callbacks.
Turns Try[A] => Unit
callbacks into Monix callbacks.
These are common within Scala's standard library implementation,
due to usage with Scala's Future
.
Wraps any Callback into a safer implementation that protects against grammar violations (e.g.
Wraps any Callback into a safer implementation that
protects against grammar violations (e.g. onSuccess
or onError
must be called at most once). For usage in runAsync
.
Given a Callback wraps it into an implementation that
calls onSuccess
and onError
asynchronously, using the
given scala.concurrent.ExecutionContext.
Given a Callback wraps it into an implementation that
calls onSuccess
and onError
asynchronously, using the
given scala.concurrent.ExecutionContext.
The async boundary created is "light", in the sense that a TrampolinedRunnable is used and supporting schedulers can execute these using an internal trampoline, thus execution being faster and immediate, but still avoiding growing the call-stack and thus avoiding stack overflows.