ManagedAccessible

A simple, macro-less means of creating accessors from Services on members returning a ZManaged. Extend the companion object with ManagedAccessible[ServiceName], then simply call Companion(_.someMethod) to return a ZManaged effect that requires the Service in its environment.

Example:

 trait FooService {
   def readSpellBook: UManaged[String]
   def prepareWand: UManaged[Unit]
 }

 object FooService extends ManagedAccessible[FooService]

 val example: ZManaged[Has[FooService], Nothing, String] =
   for {
     _     <- FooService(_.prepareWand)
     spell <- FooService(_.readSpellBook)
   } yield spell
Companion:
object
class Object
trait Matchable
class Any

Value members

Concrete methods

def apply[R0, E, A](f: R => ZManaged[R0, E, A])(implicit tag: Tag[R], isAny: IsAny[R0]): ZManaged[Has[R], E, A]