Writes ZON structs field by field.
container: Containerpub fn end(self: *Struct) Writer.Error!voidFinishes serializing the struct.
Prints a trailing comma as configured when appropriate, and the closing bracket.
self: *Structpub fn end(self: *Struct) Writer.Error!void {
try self.container.end();
self.* = undefined;
}pub fn field( self: *Struct, name: []const u8, val: anytype, options: ValueOptions, ) Writer.Error!voidSerialize a field. Equivalent to calling fieldPrefix followed by value.
pub fn field(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
) Writer.Error!void {
try self.container.field(name, val, options);
}pub fn fieldMaxDepth( self: *Struct, name: []const u8, val: anytype, options: ValueOptions, depth: usize, ) (Writer.Error || error{ExceededMaxDepth})!voidSerialize a field. Equivalent to calling fieldPrefix followed by valueMaxDepth.
pub fn fieldMaxDepth(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
depth: usize,
) (Writer.Error || error{ExceededMaxDepth})!void {
try self.container.fieldMaxDepth(name, val, options, depth);
}pub fn fieldArbitraryDepth( self: *Struct, name: []const u8, val: anytype, options: ValueOptions, ) Writer.Error!voidSerialize a field. Equivalent to calling fieldPrefix followed by
valueArbitraryDepth.
pub fn fieldArbitraryDepth(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
) Writer.Error!void {
try self.container.fieldArbitraryDepth(name, val, options);
}pub fn beginStructField( self: *Struct, name: []const u8, options: SerializeContainerOptions, ) Writer.Error!StructStarts a field with a struct as a value. Returns the struct.
pub fn beginStructField(
self: *Struct,
name: []const u8,
options: SerializeContainerOptions,
) Writer.Error!Struct {
try self.fieldPrefix(name);
return self.container.serializer.beginStruct(options);
}pub fn beginTupleField( self: *Struct, name: []const u8, options: SerializeContainerOptions, ) Writer.Error!TupleStarts a field with a tuple as a value. Returns the tuple.
pub fn beginTupleField(
self: *Struct,
name: []const u8,
options: SerializeContainerOptions,
) Writer.Error!Tuple {
try self.fieldPrefix(name);
return self.container.serializer.beginTuple(options);
}pub fn fieldPrefix(self: *Struct, name: []const u8) Writer.Error!voidPrint a field prefix. This prints any necessary commas, the field name (escaped if necessary) and whitespace as configured. Useful if you want to serialize the field value yourself.
self: *Structname: []const u8pub fn fieldPrefix(self: *Struct, name: []const u8) Writer.Error!void {
try self.container.fieldPrefix(name);
}pub const Struct = struct {
container: Container,
fn begin(parent: *Self, options: SerializeContainerOptions) Writer.Error!Struct {
return .{
.container = try Container.begin(parent, .named, options),
};
}
/// Finishes serializing the struct.
///
/// Prints a trailing comma as configured when appropriate, and the closing bracket.
pub fn end(self: *Struct) Writer.Error!void {
try self.container.end();
self.* = undefined;
}
/// Serialize a field. Equivalent to calling `fieldPrefix` followed by `value`.
pub fn field(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
) Writer.Error!void {
try self.container.field(name, val, options);
}
/// Serialize a field. Equivalent to calling `fieldPrefix` followed by `valueMaxDepth`.
pub fn fieldMaxDepth(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
depth: usize,
) (Writer.Error || error{ExceededMaxDepth})!void {
try self.container.fieldMaxDepth(name, val, options, depth);
}
/// Serialize a field. Equivalent to calling `fieldPrefix` followed by
/// `valueArbitraryDepth`.
pub fn fieldArbitraryDepth(
self: *Struct,
name: []const u8,
val: anytype,
options: ValueOptions,
) Writer.Error!void {
try self.container.fieldArbitraryDepth(name, val, options);
}
/// Starts a field with a struct as a value. Returns the struct.
pub fn beginStructField(
self: *Struct,
name: []const u8,
options: SerializeContainerOptions,
) Writer.Error!Struct {
try self.fieldPrefix(name);
return self.container.serializer.beginStruct(options);
}
/// Starts a field with a tuple as a value. Returns the tuple.
pub fn beginTupleField(
self: *Struct,
name: []const u8,
options: SerializeContainerOptions,
) Writer.Error!Tuple {
try self.fieldPrefix(name);
return self.container.serializer.beginTuple(options);
}
/// Print a field prefix. This prints any necessary commas, the field name (escaped if
/// necessary) and whitespace as configured. Useful if you want to serialize the field
/// value yourself.
pub fn fieldPrefix(self: *Struct, name: []const u8) Writer.Error!void {
try self.container.fieldPrefix(name);
}
}