Skip to content

Conversation

@njlr
Copy link
Contributor

@njlr njlr commented Sep 8, 2025

Adds chunkBySize and tests

Closes chunkBySize

@njlr
Copy link
Contributor Author

njlr commented Sep 9, 2025

Provided by bufferByCount

let bufferByCount (bufferSize:int) (source:AsyncSeq<'T>) : AsyncSeq<'T[]> =
if (bufferSize < 1) then invalidArg "bufferSize" "must be positive"
asyncSeq {
let buffer = new ResizeArray<_>()
use ie = source.GetEnumerator()
let! move = ie.MoveNext()
let b = ref move
while b.Value.IsSome do
buffer.Add b.Value.Value
if buffer.Count = bufferSize then
yield buffer.ToArray()
buffer.Clear()
let! moven = ie.MoveNext()
b := moven
if (buffer.Count > 0) then
yield buffer.ToArray() }

@njlr njlr closed this Sep 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add AsyncSeq.chunkBySize

1 participant