pub struct Wip<'a> { /* private fields */ }Expand description
A work-in-progress heap-allocated value
Implementations§
Source§impl Wip<'_>
impl Wip<'_>
Sourcepub fn variant(self, index: usize) -> Result<Self, ReflectError>
pub fn variant(self, index: usize) -> Result<Self, ReflectError>
Sourcepub fn variant_named(self, name: &str) -> Result<Self, ReflectError>
pub fn variant_named(self, name: &str) -> Result<Self, ReflectError>
Sourcepub fn selected_variant(&self) -> Option<Variant>
pub fn selected_variant(&self) -> Option<Variant>
Returns the currently selected variant for the enum in the current frame.
§Returns
Some(variant)if the current frame is an enum and a variant has been selected.Noneif the current frame is not an enum or no variant has been selected yet.
Source§impl<'a> Wip<'a>
impl<'a> Wip<'a>
Sourcepub fn put_peek<'mem>(self, peek: Peek<'mem>) -> Result<Wip<'mem>, ReflectError>where
'a: 'mem,
pub fn put_peek<'mem>(self, peek: Peek<'mem>) -> Result<Wip<'mem>, ReflectError>where
'a: 'mem,
Puts the value from a Peek into the current frame.
Sourcepub fn frames_count(&self) -> usize
pub fn frames_count(&self) -> usize
Returns the number of frames on the stack
Sourcepub fn alloc_shape(shape: &'static Shape) -> Self
pub fn alloc_shape(shape: &'static Shape) -> Self
Allocates a new value of the given shape
Sourcepub fn build(self) -> Result<HeapValue<'a>, ReflectError>
pub fn build(self) -> Result<HeapValue<'a>, ReflectError>
Asserts everything is initialized and that invariants are upheld (if any)
Sourcepub fn field(self, index: usize) -> Result<Self, ReflectError>
pub fn field(self, index: usize) -> Result<Self, ReflectError>
Selects a field of a struct or enum variant by index and pushes it onto the frame stack.
§Arguments
index- The index of the field to select.
§Returns
Ok(Self)if the field was successfully selected and pushed.Err(ReflectError)if the current frame is not a struct or an enum with a selected variant, or if the field doesn’t exist.
Sourcepub fn field_index(&self, name: &str) -> Option<usize>
pub fn field_index(&self, name: &str) -> Option<usize>
Sourcepub fn field_named(self, name: &str) -> Result<Self, ReflectError>
pub fn field_named(self, name: &str) -> Result<Self, ReflectError>
Selects a field of a struct or enum variant by name and pushes it onto the frame stack.
§Arguments
name- The name of the field to select.
§Returns
Ok(Self)if the field was successfully selected and pushed.Err(ReflectError)if the current frame is not a struct or an enum with a selected variant, or if the field doesn’t exist.
Sourcepub fn put<'val, T: Facet + 'val>(self, t: T) -> Result<Wip<'val>, ReflectError>where
'a: 'val,
pub fn put<'val, T: Facet + 'val>(self, t: T) -> Result<Wip<'val>, ReflectError>where
'a: 'val,
Sourcepub fn put_shape<'val>(
self,
src: PtrConst<'val>,
src_shape: &'static Shape,
) -> Result<Wip<'val>, ReflectError>where
'a: 'val,
pub fn put_shape<'val>(
self,
src: PtrConst<'val>,
src_shape: &'static Shape,
) -> Result<Wip<'val>, ReflectError>where
'a: 'val,
Puts a value from a PtrConst with the given shape into the current frame.
Sourcepub fn parse(self, s: &str) -> Result<Self, ReflectError>
pub fn parse(self, s: &str) -> Result<Self, ReflectError>
Tries to parse the current frame’s value from a string
Sourcepub fn put_from_fn(
self,
default_in_place: DefaultInPlaceFn,
) -> Result<Self, ReflectError>
pub fn put_from_fn( self, default_in_place: DefaultInPlaceFn, ) -> Result<Self, ReflectError>
Puts a value using a provided DefaultInPlaceFn in the current frame.
Sourcepub fn put_default(self) -> Result<Self, ReflectError>
pub fn put_default(self) -> Result<Self, ReflectError>
Puts the default value in the current frame.
Sourcepub fn element_shape(&self) -> Result<&'static Shape, ReflectError>
pub fn element_shape(&self) -> Result<&'static Shape, ReflectError>
Returns the shape of the element type for a list/array
Sourcepub fn key_shape(&self) -> Result<&'static Shape, ReflectError>
pub fn key_shape(&self) -> Result<&'static Shape, ReflectError>
Returns the shape of the key type for a map
Sourcepub fn put_empty_list(self) -> Result<Self, ReflectError>
pub fn put_empty_list(self) -> Result<Self, ReflectError>
Creates an empty list without pushing any elements
Sourcepub fn put_empty_map(self) -> Result<Self, ReflectError>
pub fn put_empty_map(self) -> Result<Self, ReflectError>
Creates an empty map without pushing any entries
Sourcepub fn begin_pushback(self) -> Result<Self, ReflectError>
pub fn begin_pushback(self) -> Result<Self, ReflectError>
Begins pushback mode for a list/array, allowing elements to be added one by one
Sourcepub fn begin_map_insert(self) -> Result<Self, ReflectError>
pub fn begin_map_insert(self) -> Result<Self, ReflectError>
Begins insertion mode for a map, allowing key-value pairs to be added one by one
Sourcepub fn push(self) -> Result<Self, ReflectError>
pub fn push(self) -> Result<Self, ReflectError>
Pushes a new element onto the list/array
This creates a new frame for the element. When this frame is popped, the element will be added to the list.
Sourcepub fn push_some(self) -> Result<Self, ReflectError>
pub fn push_some(self) -> Result<Self, ReflectError>
Prepare to push the Some(T) variant of an Option<T>.
Sourcepub fn pop_some_push_none(self) -> Result<Self, ReflectError>
pub fn pop_some_push_none(self) -> Result<Self, ReflectError>
Pops a not-yet-initialized option frame, setting it to None in the parent
This is used to set an option to None instead of Some. Steps:
- Asserts the option frame is NOT initialized
- Frees the memory for the pushed value
- Pops the frame
- Sets the parent option to its default value (i.e., None)
- Pops the parent option (which is the actual
Option<T>, but no longer in option mode)
Sourcepub fn push_map_key(self) -> Result<Self, ReflectError>
pub fn push_map_key(self) -> Result<Self, ReflectError>
Pushes a new key frame for a map entry
This creates a new frame for the key. After setting the key value,
call push_map_value to create a frame for the corresponding value.
Sourcepub fn push_map_value(self) -> Result<Self, ReflectError>
pub fn push_map_value(self) -> Result<Self, ReflectError>
Pushes a new value frame for a map entry
This should be called after pushing and initializing a key frame. When the value frame is popped, the key-value pair will be added to the map.
Sourcepub fn pop(self) -> Result<Self, ReflectError>
pub fn pop(self) -> Result<Self, ReflectError>
Pops the current frame — goes back up one level
Sourcepub fn evict_tree(&mut self, frame: Frame) -> Frame
pub fn evict_tree(&mut self, frame: Frame) -> Frame
Evict a frame from istates, along with all its children
(because we’re about to use drop_in_place on it — not
yet though, we need to know the variant for enums, etc.)
Sourcepub fn path(&self) -> String
pub fn path(&self) -> String
Returns the current path in the JSON document as a string. For example: “$.users[0].name”
Sourcepub fn is_field_set(&self, index: usize) -> Result<bool, ReflectError>
pub fn is_field_set(&self, index: usize) -> Result<bool, ReflectError>
Returns true if the field at the given index is set (initialized) in the current frame.