Skip to main content
Help improve this documentation

This documentation is still new and evolving. If you spot any mistakes, unclear explanations, or missing details, please open an issue.

Your feedback helps us improve!

Native ratelimit operatorsโ€‹

This page lists all operators available in the ratelimit/native sub-package of ro.

Installโ€‹

First, import the sub-package in your project:

go get -u github.com/samber/ro/plugins/ratelimit/native
  • NewRateLimiterโ€‹

    ratelimit-nativeplugin
    ๐Ÿงฉ Source๐Ÿ“š GoDoc

    Creates a rate limiter using native implementation.

    import (
    "time"

    "github.com/samber/ro"
    roratelimit "github.com/samber/ro/plugins/ratelimit/native"
    )

    obs := ro.Pipe(
    ro.Just("user1", "user1", "user2", "user1", "user2"),
    roratelimit.NewRateLimiter[string](2, time.Second, func(s string) string { return s }),
    )

    sub := obs.Subscribe(ro.PrintObserver[string]())
    defer sub.Unsubscribe()

    // Next: user1
    // Next: user1
    // Next: user2
    // Next: user2
    // (user1 may be dropped due to rate limit)
    // Completed
    Prototype:
    func NewRateLimiter[T any](count int64, interval time.Duration, keyGetter func(T) string)