Давайте разберем семейство трейтов
Fn.Это семейство представляет собой иерархию
FnOnce, FnMut, Fn, где следующий включает предыдущий.Что же они означают? На самом деле все очень просто, стоит лишь разложить все по полочкам.
Семейство Fn использует специальный синтаксический сахар, и мы обязаны писать так:
Fn(A, B, C) -> R, аналогично синтаксису функций, только без имен аргументов.Вместо
Fn<Args, Output=R>, где Args - тьюпл с типами аргументов, так как эта форма нестабильна.Далее если не указаны аргументы и возвращаемый тип, значит информация применима к любым аргументам и типам возврата.
Итак по порядку. 🧵