pub struct Budget {
pub max_integer_bits: u64,
pub integer_bytes_left: Arc<AtomicU64>,
pub max_string_bytes: usize,
pub string_bytes_left: Arc<AtomicU64>,
pub cancel: Option<Arc<AtomicBool>>,
pub max_outcomes: usize,
pub max_collection: usize,
pub work_left: u64,
pub shared: Option<Arc<AtomicU64>>,
}Expand description
Limits on building distributions, shared by everything in a run.
Fields§
§max_integer_bits: u64Maximum bits in the magnitude of a single integer.
integer_bytes_left: Arc<AtomicU64>Cumulative allowance for produced large integer payloads, shared by runs.
max_string_bytes: usize§string_bytes_left: Arc<AtomicU64>Cumulative string payload allowance, shared by sampled workers.
cancel: Option<Arc<AtomicBool>>§max_outcomes: usizeThe most outcomes one distribution (or combination) may have.
max_collection: usizeThe most elements a collection built by the program may have.
work_left: u64Units of work left: world-steps plus outcomes computed.
Work shared with other threads, which work_left is topped up from
(when batches of runs are sampled in parallel).
Implementations§
Source§impl Budget
impl Budget
pub fn unlimited() -> Budget
pub fn integer_bits(&self, bits: u64) -> OpResult<()>
pub fn string_size(&self, bytes: usize) -> OpResult<()>
Sourcepub fn string_work(&mut self, s: &str) -> OpResult<()>
pub fn string_work(&mut self, s: &str) -> OpResult<()>
Charge a scan before doing it, in units of 64 UTF-8 bytes.
Sourcepub fn string_allocation(&self, bytes: usize) -> OpResult<()>
pub fn string_allocation(&self, bytes: usize) -> OpResult<()>
Reserve payload bytes before allocation or growing a text builder.
Sourcepub fn integer_allocation(&self, bits: u64, count: u64) -> OpResult<()>
pub fn integer_allocation(&self, bits: u64, count: u64) -> OpResult<()>
Reserve before materializing a collection, or after a single bounded result. Conservative: shared results may be charged again; no refunds.
Sourcepub fn integer_work(
&mut self,
a: &Integer,
b: &Integer,
quadratic: bool,
) -> OpResult<()>
pub fn integer_work( &mut self, a: &Integer, b: &Integer, quadratic: bool, ) -> OpResult<()>
Charge before arithmetic, including copying and processing large operands.
Sourcepub fn outcomes(&self, n: u128) -> OpResult<()>
pub fn outcomes(&self, n: u128) -> OpResult<()>
Check that a distribution with n outcomes may be built.
Sourcepub fn collection(&self, n: u128) -> OpResult<()>
pub fn collection(&self, n: u128) -> OpResult<()>
Check that a collection with n elements may be built.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Budget
impl RefUnwindSafe for Budget
impl Send for Budget
impl Sync for Budget
impl Unpin for Budget
impl UnsafeUnpin for Budget
impl UnwindSafe for Budget
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
renamed to 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);