Provider.kt

  1. package com.hexagontk.injection

  2. sealed class Provider<out T : Any> {
  3.     abstract fun provide(): T

  4.     data class Generator<out T : Any>(val generator: () -> T) : Provider<T>() {
  5.         override fun provide(): T =
  6.             generator()
  7.     }

  8.     data class Instance<out T : Any>(val instance: T) : Provider<T>() {
  9.         override fun provide(): T =
  10.             instance
  11.     }
  12. }