Struct Wip

Source
pub struct Wip<'facet_lifetime> { /* private fields */ }
Expand description

A work-in-progress heap-allocated value

Implementations§

Source§

impl Wip<'_>

Source

pub fn can_put_f64(&self) -> bool

Returns true if the current frame can accept a f64 into a supported numeric type.

Source

pub fn try_put_f64(self, number: f64) -> Result<Self, ReflectError>

Attempts to put a f64 into the current frame, converting to the underlying numeric type.

Source§

impl Wip<'_>

Source

pub fn variant(self, index: usize) -> Result<Self, ReflectError>

Selects a variant of an enum by index.

§Arguments
  • index - The index of the variant to select.
§Returns
  • Ok(Self) if the variant was successfully selected.
  • Err(ReflectError) if the current frame is not an enum or the variant index is out of bounds.
Source

pub fn variant_named(self, name: &str) -> Result<Self, ReflectError>

Selects a variant of an enum by name.

§Arguments
  • name - The name of the variant to select.
§Returns
  • Ok(Self) if the variant was successfully selected.
  • Err(ReflectError) if the current frame is not an enum or no variant with the given name exists.
Source

pub fn find_variant(&self, name: &str) -> Option<(usize, Variant)>

Finds a variant in an enum by name.

§Arguments
  • name - The name of the variant to find.
§Returns
  • Some(index, variant) if a variant with the given name exists.
  • None if the current frame is not an enum or no variant with the given name exists.
Source

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.
  • None if the current frame is not an enum or no variant has been selected yet.
Source§

impl<'facet_lifetime> Wip<'facet_lifetime>

Source

pub fn put_peek( self, peek: Peek<'_, 'facet_lifetime>, ) -> Result<Wip<'facet_lifetime>, ReflectError>

Puts the value from a Peek into the current frame.

Source

pub fn frames_count(&self) -> usize

Returns the number of frames on the stack

Source

pub fn alloc_shape(shape: &'static Shape) -> Result<Self, ReflectError>

Allocates a new value of the given shape

Source

pub fn alloc<S: Facet<'facet_lifetime>>() -> Result<Self, ReflectError>

Allocates a new value of type S

Source

pub fn shape(&self) -> &'static Shape

Returns the shape of the current frame

Source

pub fn innermost_shape(&self) -> &'static Shape

Returns the innermost shape for the current frame If the current shape is a transparent wrapper, this returns the shape of the wrapped type Otherwise, returns the current shape

Source

pub fn in_option(&self) -> bool

Return true if the last frame is in option mode

Source

pub fn mode(&self) -> FrameMode

Returns the mode of the current frame

Source

pub fn build(self) -> Result<HeapValue<'facet_lifetime>, ReflectError>

Asserts everything is initialized and that invariants are upheld (if any)

Source

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.
Source

pub fn field_index(&self, name: &str) -> Option<usize>

Finds the index of a field in a struct or enum variant by name.

§Arguments
  • name - The name of the field to find.
§Returns
  • Some(usize) if the field was found.
  • None if the current frame is not a struct or an enum with a selected variant, or if the field doesn’t exist.
Source

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.
Source

pub fn put<T: Facet<'facet_lifetime>>( self, t: T, ) -> Result<Wip<'facet_lifetime>, ReflectError>

Puts a value of type T into the current frame.

§Arguments
  • t - The value to put into the frame.
§Returns
  • Ok(Self) if the value was successfully put into the frame.
  • Err(ReflectError) if there was an error putting the value into the frame.
Source

pub fn try_put<T: Facet<'facet_lifetime>>( self, t: T, ) -> Result<Wip<'facet_lifetime>, ReflectError>

Puts a value of type T into the current frame.

§Arguments
  • t - The value to put into the frame.
§Returns
  • Ok(Self) if the value was successfully put into the frame.
  • Err(ReflectError) if there was an error putting the value into the frame.
Source

pub fn put_shape( self, src: PtrConst<'_>, src_shape: &'static Shape, ) -> Result<Wip<'facet_lifetime>, ReflectError>

Puts a value from a PtrConst with the given shape into the current frame.

Source

pub fn parse(self, s: &str) -> Result<Self, ReflectError>

Tries to parse the current frame’s value from a string

Source

pub fn put_from_fn( self, default_in_place: DefaultInPlaceFn, ) -> Result<Self, ReflectError>

Puts a value using a provided DefaultInPlaceFn in the current frame.

Source

pub fn put_default(self) -> Result<Self, ReflectError>

Puts the default value in the current frame.

Source

pub fn element_shape(&self) -> Result<&'static Shape, ReflectError>

Returns the shape of the element type for a list/array

Source

pub fn key_shape(&self) -> Result<&'static Shape, ReflectError>

Returns the shape of the key type for a map

Source

pub fn put_empty_list(self) -> Result<Self, ReflectError>

Creates an empty list without pushing any elements

Source

pub fn put_empty_map(self) -> Result<Self, ReflectError>

Creates an empty map without pushing any entries

Source

pub fn begin_pushback(self) -> Result<Self, ReflectError>

Begins pushback mode for a list, array, tuple struct, or enum variant tuple struct, allowing elements to be added one by one. For lists/arrays, initializes an empty container if needed. For tuple structs/variants, does nothing (expects subsequent push calls).

Source

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

Source

pub fn push(self) -> Result<Self, ReflectError>

Pushes a new element onto the list/array/tuple struct/tuple enum variant

This creates a new frame for the element. When this frame is popped, the element will be added to the list or the corresponding tuple field will be set.

Source

pub fn push_some(self) -> Result<Self, ReflectError>

Prepare to push the Some(T) variant of an Option<T>.

Source

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:

  1. Asserts the option frame is NOT initialized
  2. Frees the memory for the pushed value
  3. Pops the frame
  4. Sets the parent option to its default value (i.e., None)
  5. Pops the parent option (which is the actual Option<T>, but no longer in option mode)
Source

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.

Source

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.

Source

pub fn pop(self) -> Result<Self, ReflectError>

Pops the current frame — goes back up one level

Source

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.)

Source

pub fn path(&self) -> String

Returns the current path in the JSON document as a string. For example: “$.users[0].name”

Source

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.

Trait Implementations§

Source§

impl Drop for Wip<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'facet_lifetime> Freeze for Wip<'facet_lifetime>

§

impl<'facet_lifetime> RefUnwindSafe for Wip<'facet_lifetime>

§

impl<'facet_lifetime> !Send for Wip<'facet_lifetime>

§

impl<'facet_lifetime> !Sync for Wip<'facet_lifetime>

§

impl<'facet_lifetime> Unpin for Wip<'facet_lifetime>

§

impl<'facet_lifetime> !UnwindSafe for Wip<'facet_lifetime>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.