Skip to content

Commit b540aab

Browse files
authored
+ singleton
1 parent 373e5ac commit b540aab

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/FSharp.Control.TaskSeq/TaskSeq.fs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@ module TaskSeq =
1515
for c: 'T in [] do
1616
yield c
1717
}
18+
19+
let singleton (source: 'T) =
20+
{ new IAsyncEnumerable<'T> with
21+
member _.GetAsyncEnumerator(_) =
22+
let mutable started = false
23+
{ new IAsyncEnumerator<'T> with
24+
member _.MoveNextAsync () =
25+
let r = ValueTask.FromResult (not started)
26+
started <- true
27+
r
28+
member _.get_Current () : 'T = if started then source else invalidOp "Enumeration has not started. Call MoveNextAsync."
29+
member _.DisposeAsync () = ValueTask.CompletedTask
30+
}
31+
}
1832

1933
let isEmpty source = Internal.isEmpty source
2034

0 commit comments

Comments
 (0)