Sorry for the bad title of this issue ``` rust use serialize::json; use std::iter::Map; extern crate serialize; macro_rules! expect_f64 { ($value:expr) => (try!( match $value.as_f64() { Some(v) => Ok(v), None => Err("Expected f64 value") } )) } fn main() { let v = vec![json::Json::F64(1.0)]; let m: Map<f64, _> = v.iter().map(|p| expect_f64!(p)); } ``` ``` Compiling jsonn v0.0.1 (file:///private/tmp/jsonn) src/lib.rs:19:43: 19:58 error: mismatched types: expected `core::result::Result<_, _>`, found `f64` (expected enum `core::result::Result`, found f64) [E0308] src/lib.rs:19 let m: Map<f64, _> = v.iter().map(|p| expect_f64!(p)); ^~~~~~~~~~~~~~~ src/lib.rs:19:26: 19:58 error: mismatched types: expected `core::iter::Map<f64, _>`, found `core::iter::Map<core::slice::Iter<'_, serialize::json::Json>, [closure src/lib.rs:19:39: 19:58]>` (expected f64, found struct `core::slice::Iter`) [E0308] src/lib.rs:19 let m: Map<f64, _> = v.iter().map(|p| expect_f64!(p)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: aborting due to 2 previous errors Could not compile `jsonn`. To learn more, run the command again with --verbose. ``` For some reason, the compiler expects that closure to return a `Result` instead of an `f64`. It might have to do with using macros in a closure?
Activity
frewsxcv commentedon Feb 15, 2015
Nevermind, tjakubow on IRC helped me debug this
Merge pull request rust-lang#22355 from WaterWhisperer/diagnostic-non…