Macro serde_json_lodash::find_index[][src]

macro_rules! find_index {
    () => { ... };
    ($a:expr $(,)*) => { ... };
    ($a:expr, $b:expr $(,)*) => { ... };
    ($a:expr, $b:expr, $c:expr $(,)*) => { ... };
    ($a:expr, $b:expr, $c:expr, $($rest:tt)*) => { ... };
}

Description can be found in lodash findIndex

Examples:

#[macro_use] extern crate serde_json_lodash;
use serde_json::json;
let users = json!([
  { "user": "barney",  "active": false },
  { "user": "fred",    "active": false },
  { "user": "pebbles", "active": true }
]);
assert_eq!(
  find_index!(users, |o| o["user"] == "barney".to_string()),
  json!(0)
);
// conflict with fn, no implemented
// assert_eq!(
//   find_index!(users, json!({ "user": "fred", "active": false })),
//   json!(1)
// );
// assert_eq!(
//   find_index!(users, json!(["active", false])),
//   json!(0)
// );
// assert_eq!(
//   find_index!(users, json!("active")),
//   json!(2)
// );
// assert_eq!(
//   find_index!(users, "active"),
//   json!(2)
// );

More examples:

assert_eq!(find_index!(), -1);
assert_eq!(find_index!(json!(null)), -1);
assert_eq!(find_index!(json!(true)), -1);
assert_eq!(find_index!(json!(0)), -1);
assert_eq!(find_index!(json!("")), -1);
assert_eq!(find_index!(json!([])), -1);
assert_eq!(find_index!(json!([{"a":null},{"a":false},{"a":0},{"a":""},{"a":[]}]), |_| true), 0);
assert_eq!(find_index!(json!([{"a":null},{"a":false},{"a":0},{"a":""},{"a":[]}]), |_| true, 1), 1);
assert_eq!(find_index!(json!({})), -1);