|
@@ -13,9 +13,9 @@ import (
|
|
|
//
|
|
//
|
|
|
// Может быть либо только полезное значение, либо только ошибка.
|
|
// Может быть либо только полезное значение, либо только ошибка.
|
|
|
type Result[T any] struct {
|
|
type Result[T any] struct {
|
|
|
- val T // Полезное значение
|
|
|
|
|
- isCheck bool // Если проверено
|
|
|
|
|
- err error // Ошибка
|
|
|
|
|
|
|
+ val T // Полезное значение
|
|
|
|
|
+ isCheck def_spec.Bool // Если проверено
|
|
|
|
|
+ err error // Ошибка
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
var (
|
|
@@ -28,7 +28,8 @@ func NewOk[T any](result T) def_spec.IResult[T] {
|
|
|
v := reflect.ValueOf(result)
|
|
v := reflect.ValueOf(result)
|
|
|
switch v.Kind() {
|
|
switch v.Kind() {
|
|
|
case reflect.Pointer, reflect.Slice, reflect.Map, reflect.Chan, reflect.Func, reflect.Interface:
|
|
case reflect.Pointer, reflect.Slice, reflect.Map, reflect.Chan, reflect.Func, reflect.Interface:
|
|
|
- mKh.Hassert(!v.IsNil(), str5)
|
|
|
|
|
|
|
+ isNil := def_spec.Bool(v.IsNil())
|
|
|
|
|
+ mKh.Hassert(!isNil, str5)
|
|
|
}
|
|
}
|
|
|
sf := &Result[T]{
|
|
sf := &Result[T]{
|
|
|
val: result,
|
|
val: result,
|
|
@@ -77,13 +78,13 @@ func (sf *Result[T]) destroy(res *Result[T]) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// IsOk -- возвращает true, если Result содержит значение.
|
|
// IsOk -- возвращает true, если Result содержит значение.
|
|
|
-func (sf *Result[T]) IsOk() bool {
|
|
|
|
|
|
|
+func (sf *Result[T]) IsOk() def_spec.Bool {
|
|
|
sf.isCheck = true
|
|
sf.isCheck = true
|
|
|
return sf.err == nil
|
|
return sf.err == nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// IsErr -- возвращает true, если Result содержит ошибку.
|
|
// IsErr -- возвращает true, если Result содержит ошибку.
|
|
|
-func (sf *Result[T]) IsErr() bool {
|
|
|
|
|
|
|
+func (sf *Result[T]) IsErr() def_spec.Bool {
|
|
|
sf.isCheck = true
|
|
sf.isCheck = true
|
|
|
return sf.err != nil
|
|
return sf.err != nil
|
|
|
}
|
|
}
|