fn useful(i: usize) -> usize {
i
}
fn useful2(i: usize) -> usize {
i
}
fn main() {
for f in &[useful, useful2, |x| x] {
println!("{}", f(6));
}
}
compiles and runs fine. (see https://play.rust-lang.org/?gist=de9e7ce8fd0683e1dbdcf362a2e16dd4&version=stable)
but if I remove useful2 from the slice, type inference fails:
error[E0308]: mismatched types
--> src/main.rs:10:24
|
10 | for f in &[useful, |x| x] {
| ^^^^^ expected fn item, found closure
|
= note: expected type `fn(usize) -> usize {useful}`
found type `[closure@src/main.rs:10:24: 10:29]`
(see https://play.rust-lang.org/?gist=428522c1c8e14eefaa690d5d09e67b82&version=stable )
If I insert useful twice (ie &[useful, useful, |x| x]) I still get this error.
compiles and runs fine. (see https://play.rust-lang.org/?gist=de9e7ce8fd0683e1dbdcf362a2e16dd4&version=stable)
but if I remove
useful2from the slice, type inference fails:(see https://play.rust-lang.org/?gist=428522c1c8e14eefaa690d5d09e67b82&version=stable )
If I insert
usefultwice (ie&[useful, useful, |x| x]) I still get this error.