Documentation
¶
Index ¶
- Variables
- func Await[T any](f *Future[T]) (T, error)
- func SetExecutor(e Executor)
- type AnyResult
- type Executor
- type Future
- func AllOf[T any](fs ...*Future[T]) *Future[[]T]
- func AnyOf[T any](fs ...*Future[T]) *Future[AnyResult[T]]
- func Async[T any](f func() (T, error)) *Future[T]
- func CtxAsync[T any](ctx context.Context, f func(ctx context.Context) (T, error)) *Future[T]
- func CtxSubmit[T any](ctx context.Context, e Executor, f func(ctx context.Context) (T, error)) *Future[T]
- func Done[T any](val T) *Future[T]
- func Done2[T any](val T, err error) *Future[T]
- func Lazy[T any](f func() (T, error)) *Future[T]
- func Of10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9]]
- func Of11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
- func Of12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]]
- func Of13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]]
- func Of14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]]
- func Of15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) ...
- func Of16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) ...
- func Of2[T0, T1 any](t0 *Future[T0], t1 *Future[T1]) *Future[Tuple2[T0, T1]]
- func Of3[T0, T1, T2 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2]) *Future[Tuple3[T0, T1, T2]]
- func Of4[T0, T1, T2, T3 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3]) *Future[Tuple4[T0, T1, T2, T3]]
- func Of5[T0, T1, T2, T3, T4 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4]) *Future[Tuple5[T0, T1, T2, T3, T4]]
- func Of6[T0, T1, T2, T3, T4, T5 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple6[T0, T1, T2, T3, T4, T5]]
- func Of7[T0, T1, T2, T3, T4, T5, T6 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple7[T0, T1, T2, T3, T4, T5, T6]]
- func Of8[T0, T1, T2, T3, T4, T5, T6, T7 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple8[T0, T1, T2, T3, T4, T5, T6, T7]]
- func Of9[T0, T1, T2, T3, T4, T5, T6, T7, T8 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], ...) *Future[Tuple9[T0, T1, T2, T3, T4, T5, T6, T7, T8]]
- func Submit[T any](e Executor, f func() (T, error)) *Future[T]
- func Then[T any, R any](f *Future[T], cb func(T, error) (R, error)) *Future[R]
- func ThenAsync[T any, R any](f *Future[T], cb func(T, error) *Future[R]) *Future[R]
- func Timeout[T any](f *Future[T], d time.Duration) *Future[T]
- func ToAny[T any](f *Future[T]) *Future[any]
- func Until[T any](f *Future[T], t time.Time) *Future[T]
- type Promise
- type Tuple10
- type Tuple11
- type Tuple12
- type Tuple13
- type Tuple14
- type Tuple15
- type Tuple16
- type Tuple2
- type Tuple3
- type Tuple4
- type Tuple5
- type Tuple6
- type Tuple7
- type Tuple8
- type Tuple9
Constants ¶
This section is empty.
Variables ¶
var ErrPanic = errors.New("async panic")
var ErrTimeout = errors.New("future timeout")
Functions ¶
func SetExecutor ¶ added in v0.1.5
func SetExecutor(e Executor)
Types ¶
type Future ¶
type Future[T any] struct { // contains filtered or unexported fields }
Future The Future provides a mechanism to access the result of asynchronous operations:
1. An asynchronous operation (Async, Lazy or Promise) can provide a Future to the creator of that asynchronous operation.
2. The creator of the asynchronous operation can then use a variety of methods to query, wait for, or extract a value from the Future. These methods may block if the asynchronous operation has not yet provided a value.
3. When the asynchronous operation is ready to send a result to the creator, it can do so by modifying shared state (e.g. Promise.Set) that is linked to the creator's std::future.
The Future also has the ability to register a callback to be called when the asynchronous operation is ready to send a result to the creator.
func Of12 ¶ added in v0.1.4
func Of12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], t5 *Future[T5], t6 *Future[T6], t7 *Future[T7], t8 *Future[T8], t9 *Future[T9], t10 *Future[T10], t11 *Future[T11]) *Future[Tuple12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]]
func Of13 ¶ added in v0.1.4
func Of13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], t5 *Future[T5], t6 *Future[T6], t7 *Future[T7], t8 *Future[T8], t9 *Future[T9], t10 *Future[T10], t11 *Future[T11], t12 *Future[T12]) *Future[Tuple13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]]
func Of14 ¶ added in v0.1.4
func Of14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], t5 *Future[T5], t6 *Future[T6], t7 *Future[T7], t8 *Future[T8], t9 *Future[T9], t10 *Future[T10], t11 *Future[T11], t12 *Future[T12], t13 *Future[T13]) *Future[Tuple14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]]
func Of15 ¶ added in v0.1.4
func Of15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], t5 *Future[T5], t6 *Future[T6], t7 *Future[T7], t8 *Future[T8], t9 *Future[T9], t10 *Future[T10], t11 *Future[T11], t12 *Future[T12], t13 *Future[T13], t14 *Future[T14]) *Future[Tuple15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]]
func Of16 ¶ added in v0.1.4
func Of16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](t0 *Future[T0], t1 *Future[T1], t2 *Future[T2], t3 *Future[T3], t4 *Future[T4], t5 *Future[T5], t6 *Future[T6], t7 *Future[T7], t8 *Future[T8], t9 *Future[T9], t10 *Future[T10], t11 *Future[T11], t12 *Future[T12], t13 *Future[T13], t14 *Future[T14], t15 *Future[T15]) *Future[Tuple16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]]
func (*Future[T]) GetOrDefault ¶ added in v0.1.2
func (f *Future[T]) GetOrDefault(defaultVal T) T
GetOrDefault returns the value of the Future. If error has been set, it returns the default value.
type Promise ¶
type Promise[T any] struct { // contains filtered or unexported fields }
Promise The Promise provides a facility to store a value or an error that is later acquired asynchronously via a Future created by the Promise. Note that the Promise object is meant to be set only once.
Each Promise is associated with a shared state, which contains some state information and a result which may be not yet evaluated, evaluated to a value (possibly nil) or evaluated to an error.
The Promise is the "push" end of the promise-future communication channel: the operation that stores a value in the shared state synchronizes-with (as defined in Go's memory model) the successful return from any function that is waiting on the shared state (such as Future.Get).
A Promise must not be copied after first use.
type Tuple10 ¶ added in v0.1.3
type Tuple10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 }
type Tuple11 ¶ added in v0.1.3
type Tuple11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 }
type Tuple12 ¶ added in v0.1.3
type Tuple12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 Val11 T11 }
type Tuple13 ¶ added in v0.1.3
type Tuple13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 Val11 T11 Val12 T12 }
type Tuple14 ¶ added in v0.1.3
type Tuple14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 Val11 T11 Val12 T12 Val13 T13 }
type Tuple15 ¶ added in v0.1.3
type Tuple15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 Val11 T11 Val12 T12 Val13 T13 Val14 T14 }
type Tuple16 ¶ added in v0.1.3
type Tuple16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 Val7 T7 Val8 T8 Val9 T9 Val10 T10 Val11 T11 Val12 T12 Val13 T13 Val14 T14 Val15 T15 }
type Tuple4 ¶ added in v0.1.3
type Tuple4[T0, T1, T2, T3 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 }
type Tuple5 ¶ added in v0.1.3
type Tuple5[T0, T1, T2, T3, T4 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 }
type Tuple6 ¶ added in v0.1.3
type Tuple6[T0, T1, T2, T3, T4, T5 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 }
type Tuple7 ¶ added in v0.1.3
type Tuple7[T0, T1, T2, T3, T4, T5, T6 any] struct { Val0 T0 Val1 T1 Val2 T2 Val3 T3 Val4 T4 Val5 T5 Val6 T6 }