pub struct RateLimitPolicy {
pub count: usize,
pub per: Duration,
}
Expand description
A policy for rate-limiting an API key.
Fields§
§count: usize
The number of times an API key can be used in the specified duration.
per: Duration
The duration.
Implementations§
Source§impl RateLimitPolicy
impl RateLimitPolicy
Sourcepub fn new(count: usize, per: Duration) -> Self
pub fn new(count: usize, per: Duration) -> Self
Examples found in repository?
examples/api-key-pool.rs (line 11)
7async fn main() {
8 // Create a RateLimitPolicy to be applied to all API keys.
9 // Note: An APIPool can have APIKeys with different RateLimitPolicies.
10 // For the sake of simplicity, this example assumes identical policies.
11 let pol = RateLimitPolicy::new(1, Duration::seconds(2));
12
13 // Create the APIKeys.
14 let api1 = APIKey::new("1", pol);
15 let api2 = APIKey::new("2", pol);
16 let api3 = APIKey::new("3", pol);
17
18 // Create the APIKeyPool.
19 let mut pool = APIKeyPool::new();
20 pool.add_key(api1).await;
21 pool.add_key(api2).await;
22 pool.add_key(api3).await;
23
24 // Simulate 20 requests.
25 let mut ctr = 0;
26 while ctr < 20 {
27 // Use the APIKey if available (according to its respective RateLimitPolicy) or sleep.
28 if let Some(key) = pool.poll_for_key().await {
29 println!("{}", key);
30 ctr += 1;
31 } else {
32 println!("Have to sleep.");
33 time::sleep(time::Duration::from_millis(500)).await;
34 }
35 }
36}
Trait Implementations§
Source§impl Clone for RateLimitPolicy
impl Clone for RateLimitPolicy
Source§fn clone(&self) -> RateLimitPolicy
fn clone(&self) -> RateLimitPolicy
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 moreimpl Copy for RateLimitPolicy
Auto Trait Implementations§
impl Freeze for RateLimitPolicy
impl RefUnwindSafe for RateLimitPolicy
impl Send for RateLimitPolicy
impl Sync for RateLimitPolicy
impl Unpin for RateLimitPolicy
impl UnwindSafe for RateLimitPolicy
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