Commit f1999712b0

InKryption <inkryption07@gmail.com>
2022-08-11 18:28:35
std.io.Reader: bounded array functions * Add readIntoBoundedBytes * Add readBoundedBytes
1 parent cd5a9ba
Changed files (1)
lib
std
lib/std/io/reader.zig
@@ -247,6 +247,27 @@ pub fn Reader(
             return bytes;
         }
 
+        /// Reads bytes into the bounded array, until
+        /// the bounded array is full, or the stream ends.
+        pub fn readIntoBoundedBytes(
+            self: Self,
+            comptime num_bytes: usize,
+            bounded: *std.BoundedArray(u8, num_bytes),
+        ) !void {
+            while (bounded.len < num_bytes) {
+                const bytes_read = try self.read(bounded.unusedCapacitySlice());
+                if (bytes_read == 0) return;
+                bounded.len += bytes_read;
+            }
+        }
+
+        /// Reads at most `num_bytes` and returns as a bounded array.
+        pub fn readBoundedBytes(self: Self, comptime num_bytes: usize) !std.BoundedArray(u8, num_bytes) {
+            var result = std.BoundedArray(u8, num_bytes){};
+            try self.readIntoBoundedBytes(num_bytes, &result);
+            return result;
+        }
+
         /// Reads a native-endian integer
         pub fn readIntNative(self: Self, comptime T: type) !T {
             const bytes = try self.readBytesNoEof((@typeInfo(T).Int.bits + 7) / 8);