Earlier quoted context omitted.
Obviously, in his example it would be RateLimiter not Option , so no check necessary.
I think the author can propagate RateLimiter instead of *RateLimiter, making it exactly the same
That is problematic for two reasons: it might be a large type, so copying might be expensive. Second, more likely, it might violate invariants in your domain. For a rate limiter, this might mean accidentally copying around some internal state like a mutex, which then exists n times instead of 1 time, which can represent a problem (e.g. if you want to internally limit whole-app concurrency toward Redis).