commit c583d140135fe5a57d055d9c0b8bdf59698f29e1 (tree) parent a42888e145ced152e6437c3241b799fd39c0da6a Author: Andrew Kelley <andrew@ziglang.org> Date: Tue, 28 Feb 2023 16:49:44 -0700 std.fifo: add toOwnedSlice method Diffstat:
| M | lib/std/fifo.zig | | | 15 | +++++++++++++++ |
1 file changed, 15 insertions(+), 0 deletions(-)
diff --git a/lib/std/fifo.zig b/lib/std/fifo.zig @@ -383,6 +383,21 @@ pub fn LinearFifo( self.discard(try dest_writer.write(self.readableSlice(0))); } } + + pub fn toOwnedSlice(self: *Self) Allocator.Error![]T { + assert(self.head == 0); + assert(self.count <= self.buf.len); + const allocator = self.allocator; + if (allocator.resize(self.buf, self.count)) { + const result = self.buf[0..self.count]; + self.* = Self.init(allocator); + return result; + } + const new_memory = try allocator.dupe(T, self.buf[0..self.count]); + allocator.free(self.buf); + self.* = Self.init(allocator); + return new_memory; + } }; }