@livingcoder One thing to note is that if you use traits like `Into` and `AsRef`, you might end up with a bunch of unnecessarily duplicated code bloating up your binary size.
You can avoid this with tricks like
fn do_thing_inner(x: Foo) {
// Implementation goes here...
}
pub fn do_thing<T: Into<Foo>>(x: T) {
do_thing_inner(x.into());
}
This trick is used in the standard library, for example: https://doc.rust-lang.org/1.70.0/src/std/fs.rs.html#325-330