pub struct Builder<W = Vec<u8>> { /* private fields */ }Expand description
A builder for JSON values.
The builder accumulates JSON tokens and any associated payload into an
internal byte buffer. Use the add_* methods to push values (or
begin_*/end_* to create containers). When finished, call finish to
obtain the serialized value.
Implementations§
Source§impl<W: AsMut<Vec<u8>>> Builder<W>
impl<W: AsMut<Vec<u8>>> Builder<W>
Sourcepub fn add_string(&mut self, v: &str)
pub fn add_string(&mut self, v: &str)
Adds a string value to the builder.
Sourcepub fn display(&mut self, v: impl Display)
pub fn display(&mut self, v: impl Display)
Adds a string value that displays the given value to the builder.
Sourcepub fn begin_array(&mut self)
pub fn begin_array(&mut self)
Begins an array.
The caller then needs to push the elements and call end_array to finish the array.
Sourcepub fn begin_object(&mut self)
pub fn begin_object(&mut self)
Begins an object.
The caller then needs to push the keys and values in the following order:
key-1, value-1, key-2, value-2 ...where each key must be a string.
Keys are allowed to be duplicated, but the last value will be used.
Finally end_object must be called to finish the object.
Sourcepub fn end_object(&mut self)
pub fn end_object(&mut self)
Ends an object.
§Panics
Panics if:
- there is an odd number of entries pushed since the paired
begin_object. - any key is not a string.
Sourcepub fn rollback_to(&mut self, checkpoint: &Checkpoint)
pub fn rollback_to(&mut self, checkpoint: &Checkpoint)
Roll back the builder state to the given checkpoint.
This restores the internal buffer and stacks to the sizes recorded in
checkpoint, effectively removing any data added after the checkpoint
was created.
Only data added after the checkpoint will be removed. If the builder has already popped more items than recorded in the checkpoint, or if the checkpoint does not originate from this builder, the rollback may panic or leave the builder in an inconsistent state.
The following sequence is invalid and may panic for future manipulations.
let mut builder = jsonbb::Builder::<Vec<u8>>::new();
builder.begin_array();
builder.add_u64(1);
let checkpoint = builder.checkpoint();
builder.pop();
builder.add_u64(2);
builder.rollback_to(&checkpoint);Source§impl<W: AsRef<[u8]>> Builder<W>
impl<W: AsRef<[u8]>> Builder<W>
Sourcepub fn checkpoint(&self) -> Checkpoint
pub fn checkpoint(&self) -> Checkpoint
Creates a checkpoint of the current state.
Trait Implementations§
Source§impl<W: AsMut<Vec<u8>>> SerializeMap for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeMap for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeSeq for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeSeq for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeStruct for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeStruct for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeStructVariant for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeStructVariant for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeTuple for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeTuple for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeTupleStruct for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeTupleStruct for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> SerializeTupleVariant for &mut Builder<W>
impl<W: AsMut<Vec<u8>>> SerializeTupleVariant for &mut Builder<W>
Source§impl<W: AsMut<Vec<u8>>> Serializer for &mut Builder<W>
Jsonbb is a data format.
impl<W: AsMut<Vec<u8>>> Serializer for &mut Builder<W>
Jsonbb is a data format.
Source§type Ok = ()
type Ok = ()
Serializer during successful
serialization. Most serializers that produce text or binary output
should set Ok = () and serialize into an io::Write or buffer
contained within the Serializer instance. Serializers that build
in-memory data structures may be simplified by using Ok to propagate
the data structure around.Source§type SerializeSeq = &mut Builder<W>
type SerializeSeq = &mut Builder<W>
serialize_seq for serializing the content of the
sequence.Source§type SerializeTuple = &mut Builder<W>
type SerializeTuple = &mut Builder<W>
serialize_tuple for serializing the content of
the tuple.Source§type SerializeTupleStruct = &mut Builder<W>
type SerializeTupleStruct = &mut Builder<W>
serialize_tuple_struct for serializing the
content of the tuple struct.Source§type SerializeTupleVariant = &mut Builder<W>
type SerializeTupleVariant = &mut Builder<W>
serialize_tuple_variant for serializing the
content of the tuple variant.Source§type SerializeMap = &mut Builder<W>
type SerializeMap = &mut Builder<W>
serialize_map for serializing the content of the
map.Source§type SerializeStruct = &mut Builder<W>
type SerializeStruct = &mut Builder<W>
serialize_struct for serializing the content of
the struct.Source§type SerializeStructVariant = &mut Builder<W>
type SerializeStructVariant = &mut Builder<W>
serialize_struct_variant for serializing the
content of the struct variant.Source§fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>
fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>
bool value. Read moreSource§fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error>
fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error>
i8 value. Read moreSource§fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error>
fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error>
i16 value. Read moreSource§fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error>
fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error>
i32 value. Read moreSource§fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error>
fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error>
i64 value. Read moreSource§fn serialize_i128(self, v: i128) -> Result<Self::Ok, Self::Error>
fn serialize_i128(self, v: i128) -> Result<Self::Ok, Self::Error>
i128 value. Read moreSource§fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error>
fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error>
u16 value. Read moreSource§fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error>
fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error>
u32 value. Read moreSource§fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error>
fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error>
u64 value. Read moreSource§fn serialize_u128(self, v: u128) -> Result<Self::Ok, Self::Error>
fn serialize_u128(self, v: u128) -> Result<Self::Ok, Self::Error>
u128 value. Read moreSource§fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error>
fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error>
f32 value. Read moreSource§fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error>
fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error>
f64 value. Read moreSource§fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>
fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>
Source§fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error>
fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error>
Source§fn serialize_unit_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
) -> Result<Self::Ok, Self::Error>
fn serialize_unit_variant( self, _name: &'static str, _variant_index: u32, variant: &'static str, ) -> Result<Self::Ok, Self::Error>
Source§fn serialize_newtype_struct<T>(
self,
_name: &'static str,
value: &T,
) -> Result<Self::Ok, Self::Error>
fn serialize_newtype_struct<T>( self, _name: &'static str, value: &T, ) -> Result<Self::Ok, Self::Error>
struct Millimeters(u8). Read moreSource§fn serialize_newtype_variant<T>(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
value: &T,
) -> Result<Self::Ok, Self::Error>
fn serialize_newtype_variant<T>( self, _name: &'static str, _variant_index: u32, variant: &'static str, value: &T, ) -> Result<Self::Ok, Self::Error>
Source§fn serialize_seq(
self,
_len: Option<usize>,
) -> Result<Self::SerializeSeq, Self::Error>
fn serialize_seq( self, _len: Option<usize>, ) -> Result<Self::SerializeSeq, Self::Error>
serialize_element, then a call to
end. Read moreSource§fn serialize_tuple(
self,
len: usize,
) -> Result<Self::SerializeTuple, Self::Error>
fn serialize_tuple( self, len: usize, ) -> Result<Self::SerializeTuple, Self::Error>
serialize_element,
then a call to end. Read moreSource§fn serialize_tuple_struct(
self,
_name: &'static str,
len: usize,
) -> Result<Self::SerializeTupleStruct, Self::Error>
fn serialize_tuple_struct( self, _name: &'static str, len: usize, ) -> Result<Self::SerializeTupleStruct, Self::Error>
struct Rgb(u8, u8, u8). This
call must be followed by zero or more calls to serialize_field, then a
call to end. Read moreSource§fn serialize_tuple_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize,
) -> Result<Self::SerializeTupleVariant, Self::Error>
fn serialize_tuple_variant( self, _name: &'static str, _variant_index: u32, variant: &'static str, len: usize, ) -> Result<Self::SerializeTupleVariant, Self::Error>
E::T in enum E { T(u8, u8) }. This call must be followed by zero or more calls to
serialize_field, then a call to end. Read moreSource§fn serialize_map(
self,
_len: Option<usize>,
) -> Result<Self::SerializeMap, Self::Error>
fn serialize_map( self, _len: Option<usize>, ) -> Result<Self::SerializeMap, Self::Error>
serialize_key and serialize_value, then a call to end. Read moreSource§fn serialize_struct(
self,
_name: &'static str,
len: usize,
) -> Result<Self::SerializeStruct, Self::Error>
fn serialize_struct( self, _name: &'static str, len: usize, ) -> Result<Self::SerializeStruct, Self::Error>
struct Rgb { r: u8, g: u8, b: u8 }.
This call must be followed by zero or more calls to serialize_field,
then a call to end. Read moreSource§fn serialize_struct_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize,
) -> Result<Self::SerializeStructVariant, Self::Error>
fn serialize_struct_variant( self, _name: &'static str, _variant_index: u32, variant: &'static str, len: usize, ) -> Result<Self::SerializeStructVariant, Self::Error>
E::S in enum E { S { r: u8, g: u8, b: u8 } }. This call must be followed by zero or more calls to
serialize_field, then a call to end. Read moreSource§fn collect_str<T>(self, value: &T) -> Result<Self::Ok, Self::Error>
fn collect_str<T>(self, value: &T) -> Result<Self::Ok, Self::Error>
Display. Read moreSource§fn collect_seq<I>(self, iter: I) -> Result<Self::Ok, Self::Error>
fn collect_seq<I>(self, iter: I) -> Result<Self::Ok, Self::Error>
Source§fn collect_map<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error>
fn collect_map<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error>
Source§fn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Serialize implementations should serialize in
human-readable form. Read more