fn foo<F, T>(f: F) where F: Fn(T), T: ToString, { f("Hello World") }
fn foo(f: impl for<T: ToString> Fn(T)) { f(“Hello World”); f(3.14); } fn main() { f(|x| println!("{}", x.to_string()); }
trait FnToString { fn call(&self, x: impl ToString); } fn foo(f: impl FnToString) { f.call("Hello World"); f.call(3.14); } struct AnFnToString; impl FnToString for AnFnToString { fn call(&self, x: impl ToString) { println!("{}", x.to_string()); } } fn main() { foo(AnFnToString); }