diff --git a/filter.go b/filter.go new file mode 100644 index 0000000..873f7c1 --- /dev/null +++ b/filter.go @@ -0,0 +1,16 @@ +package channel + +func Filter[T any](source <-chan T, filter func(T) bool) <-chan T { + out := make(chan T, cap(source)) + + go func() { + defer close(out) + for value := range source { + if filter(value) { + out <- value + } + } + }() + + return out +}