ML
Size: a a a
ML
ЕХ
Э
x, он внутри контекста. А lookup2 - вне контекста.В

KB
Э
В
В
Э
Э
В
Э
fn foo() {println!("foo");}
fn bar() {println!("bar");}
let b = true;
let a: fn() = if b {foo} else {bar};
a;Э
dyn Fn[Mut, Once].PK
В
С
В
fn foo() {println!("foo");}
fn bar() {println!("bar");}
let b = true;
let a: fn() = if b {foo} else {bar};
a;fn a() {}
fn b() {}
fn type_eq<T>(_: T, _: T) {}
type_eq(a, b);
Ошибка:error[E0308]: mismatched types
--> src/main.rs:5:16
|
5 | type_eq(a, b);
| ^ expected fn item, found a different fn item
|
= note: expected fn item `fn() {a}`
found fn item `fn() {b}`
Э
let a: fn() = if b { || println!("foo") } else { || println!("foo") };В