Program to an interface, not an implementation. With Rust example code.
joshldavis.com