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 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 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_default(self) -> Result<Self, ReflectError>
pub fn put_default(self) -> Result<Self, ReflectError>
Puts the default value in the currrent 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 an option
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.)
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Wip<'a>
impl<'a> RefUnwindSafe for Wip<'a>
impl<'a> !Send for Wip<'a>
impl<'a> !Sync for Wip<'a>
impl<'a> Unpin for Wip<'a>
impl<'a> !UnwindSafe for Wip<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);