borrow
Borrows a vector of size for block, allocating one when there is no workspace to lend it.
The buffer is returned in finally, including when a kernel throws. The nullable receiver supports optional workspaces; JVM signatures cannot distinguish overloads by receiver nullability. Inlining lets callers compose algorithms with bounded scratch without allocating a lambda.