fn locate_func() -> fn() -> bool {
func_exit
}
locate_func
возвращает указатель на функцию, возвращающую bool (т. Е. fn() -> bool
).
fn locate_func1<F: Fn() -> bool>() -> F {
func_exit
}
locate_func1
означает, что абонент может указать любой F
удовлетворяющий границам Fn() -> bool
, и он вернет F
. Но это явно не тот случай, когда func_exit
обязательно относится к типу, указанному вызывающей стороной.
locate_func2
имеет ту же проблему, только с where
-Notation.
Что вы, вероятно, хотите, чтобы могло быть следующее:
fn locate_func3() -> impl Fn() -> bool {
func_exit
}
Там написано: locate_func3
возвращает что-то, что реализует ограничение Fn() -> bool
(и func_exit
делает так, что его можно вернуть туда).
Также обратите внимание на разницу между fn
(указатели функций) и Fn
(«что-то вызываемое»):