Generic functions are slower than non-generic. They will be compiled in each crate using them, potentially multiple times. They will also bloat the executable, because there will be whole another copy of the function for every type it's used with.
Rust is not C++. Even if they are not materialized Rust does a lot of work to ensure they can be materialized safely.
That work is not free.
The only case where generic functions are guaranteed to be faster than non-generic is when one generic function replaces dozen of non-generic ones. And even then ratio where it becomes beneficial to use generic functions is not fixed: sometimes you may replace two non-generic functions with one generic and win, sometimes you need hundred functions before generic function would be faster.