An introduction to advanced Rust traits and generics