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โ
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)
// CompletedPrototype:func NewRateLimiter[T any](count int64, interval time.Duration, keyGetter func(T) string)