rateflow

Crates.iorateflow
lib.rsrateflow
version0.1.0
created_at2026-01-05 05:23:29.254764+00
updated_at2026-01-05 05:23:29.254764+00
descriptionA declarative, flexible, and high-performance rate limiting library for Rust
homepagehttps://github.com/M1tsumi/RateFlow
repositoryhttps://github.com/M1tsumi/RateFlow
max_upload_size
id2023146
size75,474
quefep (M1tsumi)

documentation

https://docs.rs/rateflow

README

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

Commit count: 0

cargo fmt