zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 34ca6b7b449f065fd0f65f8cfad82140cafe4c7d (tree)
parent fcd25065ef41ac93e10031ebea0ed2bc0effce17
Author: daurnimator <quae@daurnimator.com>
Date:   Mon,  1 Mar 2021 21:47:11 +1100

std: add io.Writer.writeStruct

We have readStruct, add writeStruct for symmetry

Diffstat:
Mlib/std/io/writer.zig | 7+++++++
1 file changed, 7 insertions(+), 0 deletions(-)

diff --git a/lib/std/io/writer.zig b/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)); + } }; }