Skip to main content

Usage

Struct Usage 

Source
pub struct Usage {
    pub requests: u64,
    pub input_tokens: u64,
    pub cache_write_tokens: u64,
    pub cache_write_1h_tokens: u64,
    pub cache_read_tokens: u64,
    pub output_tokens: u64,
    pub total_tokens: u64,
    pub tool_calls: u64,
}
Expand description

Token and request usage accumulated by model and runtime layers.

Fields§

§requests: u64

Number of provider requests.

§input_tokens: u64

Input or prompt tokens.

Provider adapters should normalize this as total provider-billed input tokens for the request, including cache-write and cache-read tokens when those subtotals are present. Pricing helpers subtract the cache subtotals before applying cache-specific rates.

§cache_write_tokens: u64

Provider-reported total tokens written to a prompt cache across all durations.

Use Self::effective_cache_write_tokens for derived accounting because externally constructed or deserialized usage may contain inconsistent counters.

§cache_write_1h_tokens: u64

Provider-reported one-hour cache writes included in Self::cache_write_tokens.

Providers without a one-hour cache-write breakdown leave this at zero. Use Self::effective_cache_write_1h_tokens for derived accounting.

§cache_read_tokens: u64

Tokens read from a provider prompt cache.

§output_tokens: u64

Output or completion tokens.

§total_tokens: u64

Total tokens.

§tool_calls: u64

Number of successful function tool calls executed by the runtime.

Implementations§

Source§

impl Usage

Source

pub const fn effective_cache_write_tokens(&self) -> u64

Return the effective aggregate cache-write tokens for derived accounting.

Provider counters remain raw evidence. This projection repairs a one-hour subset larger than the reported aggregate, then caps writes at the inclusive input total so malformed counters cannot create additional billed tokens.

Source

pub const fn effective_cache_write_1h_tokens(&self) -> u64

Return effective one-hour cache-write tokens for derived accounting.

Source

pub const fn effective_cache_read_tokens(&self) -> u64

Return effective cache-read tokens for derived accounting.

Cache writes take precedence when malformed write and read subtotals exceed inclusive input. Reads are capped at the input remaining after effective writes.

Source

pub const fn effective_standard_input_tokens(&self) -> u64

Return input tokens not assigned to an effective cache-write or read category.

Source

pub const fn add_assign(&mut self, other: &Self)

Add another usage value into this one.

Source

pub const fn is_empty(&self) -> bool

Return whether no usage has been recorded.

Source

pub const fn with_additional_tool_calls(self, tool_calls: u64) -> Self

Return a copy with additional successful tool calls applied.

Trait Implementations§

Source§

impl Clone for Usage

Source§

fn clone(&self) -> Usage

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 Usage

Source§

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

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

impl Default for Usage

Source§

fn default() -> Usage

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

impl<'de> Deserialize<'de> for Usage

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Usage

Source§

impl PartialEq for Usage

Source§

fn eq(&self, other: &Usage) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Usage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Usage

Auto Trait Implementations§

§

impl Freeze for Usage

§

impl RefUnwindSafe for Usage

§

impl Send for Usage

§

impl Sync for Usage

§

impl Unpin for Usage

§

impl UnsafeUnpin for Usage

§

impl UnwindSafe for Usage

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> 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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