Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Io/ › Reader.zig › takeStruct
takeStruct
Reader.takeStruct
pub inline fn takeStruct (r : *Reader , comptime T : type , endian : std .builtin .Endian ) Error !T
File
Code
pub inline fn takeStruct (r : *Reader , comptime T : type , endian : std .builtin .Endian ) Error !T {
switch (@typeInfo (T )) {
.@"struct" => |info | switch (info .layout ) {
.auto => @compileError ("ill-defined memory layout" ),
.@"extern" => {
var res : T = undefined ;
try r .readSliceAll (std .mem .asBytes (&res ));
if (native_endian != endian ) std .mem .byteSwapAllFields (T , &res );
return res ;
},
.@"packed" => {
return @bitCast (try takeInt (r , info .backing_integer .?, endian ));
},
},
else => @compileError ("not a struct" ),
}
}