If you are using Rust 1.12 or later, you can at least make function arguments easier to use with Option and into():
fn add>>(a: u32, b: T) -> u32 {
if let Some(b) = b.into() {
a + b
} else {
a
}
}
fn main() {
assert_eq!(add(3, 4), 7);
assert_eq!(add(8, None), 8);
}