mirror of
https://github.com/IBM/fp-go.git
synced 2025-08-10 22:31:32 +02:00
Dependency injection (#81)
* fix: checkin Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: add initial DI implementation Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: add multi provider Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: simplify DI implementation Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: simplify provider Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: add Switch to function package Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> * fix: add DI Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com> --------- Signed-off-by: Carsten Leue <carsten.leue@de.ibm.com> Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
package erasure
|
||||
|
||||
import (
|
||||
E "github.com/IBM/fp-go/either"
|
||||
"github.com/IBM/fp-go/errors"
|
||||
F "github.com/IBM/fp-go/function"
|
||||
)
|
||||
|
||||
@@ -29,6 +31,15 @@ func Unerase[T any](t any) T {
|
||||
return *t.(*T)
|
||||
}
|
||||
|
||||
// SafeUnerase converts an erased variable back to its original value
|
||||
func SafeUnerase[T any](t any) E.Either[error, T] {
|
||||
return F.Pipe2(
|
||||
t,
|
||||
E.ToType[*T](errors.OnSome[any]("Value of type [%T] is not erased")),
|
||||
E.Map[error](F.Deref[T]),
|
||||
)
|
||||
}
|
||||
|
||||
// Erase0 converts a type safe function into an erased function
|
||||
func Erase0[T1 any](f func() T1) func() any {
|
||||
return F.Nullary2(f, Erase[T1])
|
||||
|
Reference in New Issue
Block a user