rateflow 0.1.0

A declarative, flexible, and high-performance rate limiting library for Rust
Documentation
# RateFlow

A declarative, flexible, and high-performance rate limiting library for Rust.

## Features

- **Declarative API** - Configure complex rate limits with a simple, readable builder pattern
- **Custom Strategies** - Define different rate limits per endpoint, user tier, or client
- **Multiple Algorithms** - Token bucket and sliding window implementations
- **High Performance** - Optimized for low overhead in high-traffic scenarios
- **Flexible Identification** - Rate limit by IP address, API key, user ID, or custom identifiers

## Installation

Add to your `Cargo.toml`:

```toml
[dependencies]
rateflow = "0.1"
tokio = { version = "1", features = ["full"] }
```

## Quick Start

```rust
use rateflow::{RateLimiter, Window};

// Create a rate limiter with 100 requests per minute
let limiter = RateLimiter::builder()
    .limit(100)
    .window(Window::Minute)
    .build()
    .unwrap();

// Check if a request is allowed
let client_id = "user@example.com";
if limiter.check(client_id).await {
    // Process request
} else {
    // Reject request
}
```

## Multi-Tier Example

```rust
use rateflow::{RateLimiter, Window, Tier};

// Configure different limits for different user tiers
let limiter = RateLimiter::builder()
    .add_tier(
        Tier::new("free")
            .limit(100)
            .window(Window::Minute)
    )
    .add_tier(
        Tier::new("premium")
            .limit(1000)
            .window(Window::Minute)
    )
    .build()
    .unwrap();

// Check with tier information
if limiter.check_tier("free", "user@example.com").await {
    // Process request
}
```

## License

Apache 2