float
Serialize a float.
Function parameters
Parameters
- self:*Serializer
- val:anytype
Type definitions in this namespace
Types
- ContainerOptions
- Options for manual serialization of container types.
- ValueOptions
- Options for serialization of an individual value.
- EmitCodepointLiterals
- Determines when to emit Unicode code point literals as opposed to integer literals.
- MultilineStringOptions
- Options for formatting multiline strings.
- Tuple
- Writes ZON tuples field by field.
- Struct
- Writes ZON structs field by field.
Serialize a value, similar to `serialize`.
Functions
- value
- Serialize a value, similar to `serialize`.
- valueMaxDepth
- Serialize a value, similar to `serializeMaxDepth`.
- valueArbitraryDepth
- Serialize a value, similar to `serializeArbitraryDepth`.
- int
- Serialize an integer.
- float
- Serialize a float.
- ident
- Serialize `name` as an identifier prefixed with `.`.
- codePoint
- Serialize `val` as a Unicode codepoint.
- tuple
- Like `value`, but always serializes `val` as a tuple.
- tupleMaxDepth
- Like `tuple`, but recursive types are allowed.
- tupleArbitraryDepth
- Like `tuple`, but recursive types are allowed.
- string
- Like `value`, but always serializes `val` as a string.
- multilineString
- Like `value`, but always serializes to a multiline string literal.
- beginStruct
- Create a `Struct` for writing ZON structs field by field.
- beginTuple
- Creates a `Tuple` for writing ZON tuples field by field.
Error sets in this namespace
Error Sets
Source
Implementation
pub fn float(self: *Serializer, val: anytype) Error!void {
switch (@typeInfo(@TypeOf(val))) {
.float => if (std.math.isNan(val)) {
return self.writer.writeAll("nan");
} else if (std.math.isPositiveInf(val)) {
return self.writer.writeAll("inf");
} else if (std.math.isNegativeInf(val)) {
return self.writer.writeAll("-inf");
} else if (std.math.isNegativeZero(val)) {
return self.writer.writeAll("-0.0");
} else {
try self.writer.print("{d}", .{val});
},
.comptime_float => if (val == 0) {
return self.writer.writeAll("0");
} else {
try self.writer.print("{d}", .{val});
},
else => comptime unreachable,
}
}