pub struct ProgramCost {
pub program_name: String,
pub functions: Vec<FunctionCost>,
pub total: TableCost,
pub table_names: Vec<String>,
pub table_short_names: Vec<String>,
pub attestation_hash_rows: u64,
pub padded_height: u64,
pub estimated_proving_ns: u64,
pub loop_bound_waste: Vec<(String, u64, u64)>,
}Expand description
Cost analysis result for the full program.
Fields§
§program_name: String§functions: Vec<FunctionCost>§total: TableCost§table_names: Vec<String>Table names from the CostModel (e.g. [“processor”, “hash”, …]).
table_short_names: Vec<String>Short display names (e.g. [“cc”, “hash”, …]).
attestation_hash_rows: u64Program attestation adds ceil(instruction_count / 10) * 6 hash rows.
padded_height: u64§estimated_proving_ns: u64§loop_bound_waste: Vec<(String, u64, u64)>H0004: loops where declared bound >> actual constant end.
Implementations§
Source§impl ProgramCost
impl ProgramCost
Sourcepub fn short_names(&self) -> Vec<&str>
pub fn short_names(&self) -> Vec<&str>
Short names as str slice refs (for passing to TableCost methods).
Sourcepub fn long_names(&self) -> Vec<&str>
pub fn long_names(&self) -> Vec<&str>
Long names as str slice refs.
Source§impl ProgramCost
impl ProgramCost
pub fn to_json(&self) -> String
Sourcepub fn load_json(path: &Path) -> Result<ProgramCost, String>
pub fn load_json(path: &Path) -> Result<ProgramCost, String>
Load cost analysis from a JSON file.
Sourcepub fn from_json(s: &str) -> Result<ProgramCost, String>
pub fn from_json(s: &str) -> Result<ProgramCost, String>
Parse a ProgramCost from a JSON string. Defaults to Triton table names for backward compatibility.
Sourcepub fn from_json_with_names(
s: &str,
names: &[&str],
) -> Result<ProgramCost, String>
pub fn from_json_with_names( s: &str, names: &[&str], ) -> Result<ProgramCost, String>
Parse a ProgramCost from a JSON string with specific table names.
Sourcepub fn format_comparison(&self, other: &ProgramCost) -> String
pub fn format_comparison(&self, other: &ProgramCost) -> String
Format a comparison between this cost and another (old vs new).
Sourcepub fn boundary_warnings(&self) -> Vec<Diagnostic>
pub fn boundary_warnings(&self) -> Vec<Diagnostic>
Generate diagnostics for power-of-2 boundary proximity.
Source§impl ProgramCost
impl ProgramCost
Sourcepub fn format_report(&self) -> String
pub fn format_report(&self) -> String
Format a table-style cost report.
Sourcepub fn format_hotspots(&self, top_n: usize) -> String
pub fn format_hotspots(&self, top_n: usize) -> String
Format a hotspots report (top N cost contributors).
Sourcepub fn optimization_hints(&self) -> Vec<Diagnostic>
pub fn optimization_hints(&self) -> Vec<Diagnostic>
Generate optimization hints (H0001, H0002, H0004).
Trait Implementations§
Source§impl Clone for ProgramCost
impl Clone for ProgramCost
Source§fn clone(&self) -> ProgramCost
fn clone(&self) -> ProgramCost
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ProgramCost
impl RefUnwindSafe for ProgramCost
impl Send for ProgramCost
impl Sync for ProgramCost
impl Unpin for ProgramCost
impl UnsafeUnpin for ProgramCost
impl UnwindSafe for ProgramCost
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.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);