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 standard library.
std › multi_array_list › MultiArrayList › Elem Private Constant Elem Doc Source Private Constant std.multi_array_list.MultiArrayList.Elem
const Elem = switch (@typeInfo (T )) File multi_array_list.zig: 44
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 const Elem = switch (@typeInfo (T )) {
.@"struct" => T ,
.@"union" => |u | struct {
pub const Bare = std .meta .BareUnion (T );
pub const Tag =
u .tag_type orelse @compileError ("MultiArrayList does not support untagged unions" );
tags : Tag ,
data : Bare ,
pub fn fromT (outer : T ) @This () {
const tag = meta .activeTag (outer );
return .{
.tags = tag ,
.data = switch (tag ) {
inline else => |t | @unionInit (Bare , @tagName (t ), @field (outer , @tagName (t ))),
},
};
}
pub fn toT (tag : Tag , bare : Bare ) T {
return switch (tag ) {
inline else => |t | @unionInit (T , @tagName (t ), @field (bare , @tagName (t ))),
};
}
},
else => @compileError ("MultiArrayList only supports structs and tagged unions" ),
}