pub val ERR_EOF: str = "ERR_EOF"
pub def ReadFun: fun(ptr, *u8, usize) R.Result[usize, str]
读取回调类型
ptr:传递给读取回调的不透明上下文 buf:要读取到的缓冲区 len:最大读取字节数 ret:成功时返回读取的字节数,失败时返回错误消息
pub rec Reader;
通用读取接口
ctx:传递给读取回调的不透明上下文 f_read:读取回调(ctx, buf, len)-> R.Result[usize, str]
pub fun read(r: *Reader, buf: *u8, len: usize) R.Result[usize, str];
最多读取 len 字节到 buf 中
r:要读取的 reader buf:要读取到的缓冲区 len:最大读取字节数 ret:成功时返回读取的字节数,失败时返回错误消息
pub fun read_exact(r: *Reader, buf: *u8, len: usize) O.Option[str];
确切读取 len 字节到 buf 中
r:要读取的 reader buf:要填充的缓冲区 len:要读取的字节数 ret:失败时返回错误
pub fun read_all(a: *A.Allocator, r: *Reader) R.Result[Vector[u8], str];
读取直到 EOF 到缓冲区中,返回总读取字节数
a:要使用的分配器 r:要读取的 reader ret:成功时返回 Ok(total),失败时返回 Err(str)
pub fun read_str(a: *A.Allocator, r: *Reader) R.Result[str, str];
读取直到 EOF 并将内容作为以空字符结尾的字符串返回
零拷贝:向量的缓冲区原地终止并成为返回的字符串,因此永远不会在这里释放。从 arena 分配,或者接受只有整体回收缓冲区容量。
a:要使用的分配器 r:要读取的 reader ret:作为字符串的内容,或错误消息