Commit 34ca6b7b44

daurnimator <quae@daurnimator.com>
2021-03-01 11:47:11
std: add io.Writer.writeStruct
We have readStruct, add writeStruct for symmetry
1 parent fcd2506
Changed files (1)
lib
std
lib/std/io/writer.zig
@@ -4,6 +4,7 @@
 // The MIT license requires this copyright notice to be included in all copies
 // and substantial portions of the software.
 const std = @import("../std.zig");
+const assert = std.debug.assert;
 const builtin = std.builtin;
 const mem = std.mem;
 
@@ -86,5 +87,11 @@ pub fn Writer(
             mem.writeInt(T, &bytes, value, endian);
             return self.writeAll(&bytes);
         }
+
+        pub fn writeStruct(self: Self, value: anytype) Error!void {
+            // Only extern and packed structs have defined in-memory layout.
+            comptime assert(@typeInfo(@TypeOf(value)).Struct.layout != builtin.TypeInfo.ContainerLayout.Auto);
+            return self.writeAll(mem.asBytes(&value));
+        }
     };
 }