refactored ResultOf and ResultOfValue
This commit is contained in:
		
							
								
								
									
										15
									
								
								result.go
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								result.go
									
									
									
									
									
								
							@ -5,7 +5,15 @@ type Result[T any] struct {
 | 
			
		||||
	err   error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ResultOf[T any](value T, err error) Result[T] {
 | 
			
		||||
func ResultOf[T any](value *T, err error) Result[T] {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Result[T]{value: nil, err: err}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return Result[T]{value: value, err: nil}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ResultOfValue[T any](value T, err error) Result[T] {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Result[T]{value: nil, err: err}
 | 
			
		||||
	}
 | 
			
		||||
@ -14,16 +22,15 @@ func ResultOf[T any](value T, err error) Result[T] {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WrapResultOutputFunc[I, O any](f func(I) (O, error)) func(I) Result[O] {
 | 
			
		||||
	return func(i I) Result[O] { return ResultOf(f(i)) }
 | 
			
		||||
	return func(i I) Result[O] { return ResultOfValue(f(i)) }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WrapResultFunc[I, O any](f func(I) (O, error)) func(Result[I]) Result[O] {
 | 
			
		||||
	resFunc := WrapResultOutputFunc(f)
 | 
			
		||||
	nilValue := *new(O)
 | 
			
		||||
	return func(r Result[I]) Result[O] {
 | 
			
		||||
		v, err := r.Get()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return ResultOf(nilValue, err)
 | 
			
		||||
			return ResultOf[O](nil, err)
 | 
			
		||||
		}
 | 
			
		||||
		return resFunc(v)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user