J
Size: a a a
J
J
J
SS
let x = |i| i * 2;И всё будет работать, потому что компилятор даст иксу тип. Но пользователю его не покажет. Но как сделать замыкания объектами первого класса без кучи?
Fn(i32, i32) -> String. И ты должен написатьfn add_listener<T: Fn(i32) -> String>(listener: T) {
...
}
Если с сахаром тоfn add_listener(listener: impl Fn(i32) -> String) {
...
}
Но где хранятся переменные замыкания? Да прям в самом замыкании, замыкание это стуктура, которая тайно содержит функцию и переменные замыкания, и делается это всё автоматически, поэтому у каждого замыкания уникальный неизвестный тип, потому что структуры могут быть разных размеров в зависимости от захваченных переменных, поэтому весь "диалог" с замыканиями должен происходить через дженерики.J
SS
SS
J
J
SS
IM

4
4
NK

SS

И

И

И
yp

C