Skip to main content

Ledger

Struct Ledger 

Source
pub struct Ledger { /* private fields */ }
Expand description

An append-only record of run costs.

Held in memory here; persisting it is the store crate’s job. Ordering is insertion order, which is also chronological as long as the Tower records a run when it finishes.

Implementations§

Source§

impl Ledger

Source

pub fn new() -> Self

Creates an empty ledger.

Source

pub fn record(&mut self, cost: RunCost)

Records what a run cost.

Source

pub fn entries(&self) -> impl Iterator<Item = &RunCost>

Every recorded run, oldest first.

Source

pub fn len(&self) -> usize

Number of recorded runs.

Source

pub fn is_empty(&self) -> bool

Returns true when nothing has been recorded.

Source

pub fn total(&self) -> Summary

Totals over everything recorded.

Source

pub fn summarise(&self, keep: impl Fn(&RunCost) -> bool) -> Summary

Totals over the runs matching keep.

Source

pub fn for_itinerary(&self, itinerary: &ItineraryId) -> Summary

Totals for one chain.

Source

pub fn since(&self, since: Timestamp) -> Summary

Totals for runs that finished at or after since.

Source

pub fn by_agent(&self) -> BTreeMap<AgentName, Summary>

Totals per agent.

This is the breakdown that answers “what is expensive here”, which a single Fuel figure never could.

Source

pub fn by_model(&self) -> BTreeMap<String, Summary>

Totals per model, skipping runs whose model was never reported.

Source

pub fn by_pipeline(&self) -> BTreeMap<PipelineName, Summary>

Totals per workflow, skipping runs no pipeline began.

The breakdown a factory with several pipelines actually needs. Per-agent totals cannot answer “what does the nightly sweep cost” once an agent belongs to more than one workflow, and in a real factory most of them do.

Source

pub fn top_agents(&self, limit: usize) -> Vec<(AgentName, Summary)>

The agents that cost the most, most expensive first.

Source

pub fn prune(&mut self, before: Timestamp) -> usize

Drops entries older than before, returning how many were removed.

The ledger grows without bound otherwise, and an unattended factory runs for weeks.

Trait Implementations§

Source§

impl Clone for Ledger

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Ledger

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Ledger

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V