pub struct CostEstimate {
pub input_cost: f64,
pub output_cost: f64,
pub total_cost: f64,
pub currency: String,
}Expand description
Estimated request cost, split into input/output components.
Prices are in USD per million tokens — the standard unit advertised by Anthropic, OpenAI, and Bedrock.
§Examples
use codetether_agent::telemetry::{CostEstimate, TokenCounts};
let cost = CostEstimate::from_tokens(
&TokenCounts::new(2_000_000, 1_000_000),
3.00,
15.00,
);
assert!((cost.total_cost - 21.0).abs() < 1e-6);
assert_eq!(cost.format_smart(), "$21.00");Fields§
§input_cost: f64Cost attributable to input tokens.
output_cost: f64Cost attributable to output tokens.
total_cost: f64input_cost + output_cost.
currency: StringISO-4217 currency code (always "USD" today).
Implementations§
Source§impl CostEstimate
impl CostEstimate
Sourcepub fn from_tokens(
tokens: &TokenCounts,
input_price: f64,
output_price: f64,
) -> Self
pub fn from_tokens( tokens: &TokenCounts, input_price: f64, output_price: f64, ) -> Self
Compute a cost estimate from token counts and per-million prices.
Sourcepub fn format_currency(&self) -> String
pub fn format_currency(&self) -> String
Always 4 decimal places: "$0.0042".
Sourcepub fn format_smart(&self) -> String
pub fn format_smart(&self) -> String
Sub-cent amounts use 4 decimals; >= $0.01 uses 2.
Trait Implementations§
Source§impl Clone for CostEstimate
impl Clone for CostEstimate
Source§fn clone(&self) -> CostEstimate
fn clone(&self) -> CostEstimate
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CostEstimate
impl Debug for CostEstimate
Source§impl Default for CostEstimate
impl Default for CostEstimate
Source§impl<'de> Deserialize<'de> for CostEstimate
impl<'de> Deserialize<'de> for CostEstimate
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for CostEstimate
impl RefUnwindSafe for CostEstimate
impl Send for CostEstimate
impl Sync for CostEstimate
impl Unpin for CostEstimate
impl UnsafeUnpin for CostEstimate
impl UnwindSafe for CostEstimate
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more