This currently assumes `rows` and `datas` may be strided... is it worth specifying `::contiguous`?