With generics you're going to face these problems:
Rust doesn't have variable number of function arguments, so you'll have to use tuples as the input
You will have to use traits to describe every operation you want to perform, with exact inputs and outputs. It will be very verbose and difficult to work with. Crates like num-traits might help a bit.