provide<R, E, S> method
Implementation
ZIO<R, E, S> provide<R, E, S>(Layer<E, S> layer) => EIO<E, S>.from((ctx) {
if (_cache.containsKey(layer)) {
return (_cache[layer] as EIO<E, S>).unsafeRun(ctx);
}
final build = layer._make.provide(_scope).memoize.runSyncOrThrow();
_cache[layer] = build;
return build.unsafeRun(ctx._withLayerContext(this));
}) //
.lift<R>()
.tap((_) => ZIO(() {
_services[layer.tag] = _;
}));