| ... | @@ -126,6 +126,16 @@ pub fn Readable(T: type, this_kind: enum { _var, _const, _bare }) type { | ... | @@ -126,6 +126,16 @@ pub fn Readable(T: type, this_kind: enum { _var, _const, _bare }) type { |
| 126 | } | 126 | } |
| 127 | return error.StreamTooLong; | 127 | return error.StreamTooLong; |
| 128 | } | 128 | } |
| | 129 | |
| | 130 | pub fn readAlloc(self: Self, allocator: std.mem.Allocator, size: usize) ![]u8 { |
| | 131 | var array_list = try std.ArrayList(u8).initCapacity(allocator, size); |
| | 132 | defer array_list.deinit(); |
| | 133 | try array_list.ensureUnusedCapacity(size); |
| | 134 | const len = try readAll(self, array_list.allocatedSlice()); |
| | 135 | array_list.items.len += len; |
| | 136 | if (len != size) return error.EndOfStream; |
| | 137 | return array_list.toOwnedSlice(); |
| | 138 | } |
| 129 | }; | 139 | }; |
| 130 | } | 140 | } |
| 131 | | 141 | |