It’s possible in Rust to conditionally implement methods and traits based on the traits implemented by a type’s own type parameters. While this is used extensively in Rust’s standard library, it’s not necessarily obvious that this is possible. In this article I’ll break down what the pattern is, give some examples of its use in the standard library to show why it’s valuable, and explain when you might want to use it.