Skip to content

Commit 9101d61

Browse files
authored
feat: add channel drain
1 parent be975a6 commit 9101d61

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

channels/channels.go

+8
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,11 @@ func Broadcast[T any](input <-chan T, outputs ...chan<- T) {
4747
}
4848
}()
4949
}
50+
51+
// Drain drains the channel until it is closed.
52+
func Drain[T any](input <-chan T) {
53+
go func() {
54+
for range input {
55+
}
56+
}()
57+
}

channels/channels_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,17 @@ func TestJoin(t *testing.T) {
2626
return len(el) == 2
2727
}, 1*time.Second, 10*time.Millisecond)
2828
}
29+
30+
func TestDrain(t *testing.T) {
31+
in := make(chan int)
32+
33+
go func() {
34+
in <- 1
35+
in <- 2
36+
close(in)
37+
}()
38+
39+
Drain(in)
40+
41+
assert.Len(t, in, 0)
42+
}

0 commit comments

Comments
 (0)