struct Struct [src]

Writes ZON structs field by field.

Fields

container: Container

Members

Source

pub const Struct = struct { container: Container, fn begin(parent: *Serializer, options: ContainerOptions) 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) 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, ) Error!void { try self.container.field(name, val, options); } /// Serialize a field. Equivalent to calling `fieldPrefix` followed by `valueMaxDepth`. /// Returns `error.ExceededMaxDepth` if `depth` is exceeded. pub fn fieldMaxDepth( self: *Struct, name: []const u8, val: anytype, options: ValueOptions, depth: usize, ) DepthError!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, ) 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: ContainerOptions, ) 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: ContainerOptions, ) 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) Error!void { try self.container.fieldPrefix(name); } }