Using traits for overloading

[FIXME] Elaborate.

[FIXME] We need to decide on guidelines for this use case. There are a few patterns emerging in current Rust code, but it's not clear how widespread they should be.