2022-08-21 21:20:47 +02:00
|
|
|
package channel
|
|
|
|
|
|
|
|
func FlatSlice[T any](source <-chan []T) <-chan T {
|
|
|
|
out := make(chan T, cap(source))
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
defer close(out)
|
|
|
|
for slice := range source {
|
|
|
|
for _, v := range slice {
|
|
|
|
out <- v
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
return out
|
|
|
|
}
|
|
|
|
|
2022-08-21 21:22:16 +02:00
|
|
|
func FlatChan[T any](source <-chan <-chan T) <-chan T {
|
2022-08-21 21:20:47 +02:00
|
|
|
out := make(chan T, cap(source))
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
defer close(out)
|
|
|
|
for ch := range source {
|
|
|
|
for v := range ch {
|
|
|
|
out <- v
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
return out
|
|
|
|
}
|