Macro serde_json_lodash::find_index
source · [−]macro_rules! find_index {
() => { ... };
($a:expr $(,)*) => { ... };
($a:expr, $b:expr $(,)*) => { ... };
($a:expr, $b:expr, $c:expr $(,)*) => { ... };
($a:expr, $b:expr, $c:expr, $($rest:tt)*) => { ... };
}
Expand description
Based on find_index()
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, not 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);