summaryrefslogtreecommitdiffstats
path: root/val.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-08-22 21:26:41 -0400
committerSam Anthony <sam@samanthony.xyz>2024-08-22 21:26:41 -0400
commitc25a68894f3bce8a8e63289b46ecd6e29f5cc227 (patch)
tree321a856b960ba6ccc11113c8d1e93a390b9e9d90 /val.go
parent67e43f976e2e07252b786e584e0290a516630df6 (diff)
downloadshare-c25a68894f3bce8a8e63289b46ecd6e29f5cc227.zip
val: add TryGet() methodv0.1.0
Diffstat (limited to 'val.go')
-rw-r--r--val.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/val.go b/val.go
index 4d35fb9..2b762cb 100644
--- a/val.go
+++ b/val.go
@@ -47,6 +47,19 @@ func (v Val[T]) Get() T {
return <-c
}
+// TryGet returns the stored value if it has already been set, or false if it hasn't.
+func (v Val[T]) TryGet() (*T, bool) {
+ c := make(chan T)
+ defer close(c)
+ select {
+ case v.Request <- c:
+ val := <-c
+ return &val, true
+ default:
+ return nil, false
+ }
+}
+
func (v Val[T]) Close() {
close(v.Request)
close(v.Set)