use crate::request_rate::rate_to_string::rate_to_string;
use std::time::Instant;
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct CurrentRate {
pub first_request: Option<Instant>,
pub request_count: u64,
}
impl std::convert::From<&CurrentRate> for String {
fn from(current_rate: &CurrentRate) -> Self {
current_rate.first_request.map_or_else(
|| Self::from("None"),
|first_request| {
rate_to_string(
current_rate.request_count,
&first_request.elapsed(),
"request",
"requests",
)
}, ) } }
impl std::default::Default for CurrentRate {
fn default() -> Self {
Self {
first_request: None,
request_count: 0,
} } }
impl std::fmt::Display for CurrentRate {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", String::from(self))
} }