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:

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

Quick Start

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

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