У меня есть три функции с подписями, как показано ниже (слегка упрощенно ниже):
fn f<T>(f: impl Fn(&T), x : &impl ATrait<T>) {}
fn f<T>(f: impl Fn(&T), x : impl ATrait<T>) {}
fn f<T>(f: impl Fn(T), x : impl ATrait<T>) {}
Естественно, так как все они названы f
, это не скомпилируется, но есть ли я в любом случае, я могудать им то же имя через traits + impls или другие методы, чтобы я мог сделать:
f(|&e| {}, &x);
f(|&e| {}, x);
f(|e| {}, x);
, и он выбирает правильную перегрузку на основе типа аргумента?