pub struct APIKey { /* private fields */ }Expand description
An API key, with its associated RateLimitPolicy
Implementations§
Source§impl APIKey
impl APIKey
Sourcepub fn new(key: &str, policy: RateLimitPolicy) -> Self
pub fn new(key: &str, policy: RateLimitPolicy) -> Self
Returns an API key with the given policy and code.
§Arguments
key- the API key code.policy- the rate limit policy governing the API key.
Examples found in repository?
examples/api-key-pool.rs (line 14)
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}Auto Trait Implementations§
impl !RefUnwindSafe for APIKey
impl !UnwindSafe for APIKey
impl Freeze for APIKey
impl Send for APIKey
impl Sync for APIKey
impl Unpin for APIKey
impl UnsafeUnpin for APIKey
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