QueryMap

crates.io Documentation Build Status

QueryMap is a generic wrapper around HashMap> to handle different transformations like URL query strings.

QueryMap can normalize HashMap structures with single value elements into structures with value vector elements.

Installation

cargo install query_map

Examples

Create a QueryMap from a HashMap:

```rust use std::collections::HashMap; use query_map::QueryMap;

let mut data = HashMap::new(); data.insert("foo".into(), vec!["bar".into()]);

let map: QueryMap = QueryMap::from(data); asserteq!("bar", map.first("foo").unwrap()); asserteq!(None, map.first("bar")); ```

Create a QueryMap from a Serde Value (requires serde feature):

```rust use query_map::QueryMap;

[derive(Deserialize)]

struct Test { data: QueryMap, }

let json = serde_json::json!({ "data": { "foo": "bar" } });

let test: Test = serdejson::fromvalue(json).unwrap(); assert_eq!("bar", test.data.first("foo").unwrap()); ```

Create a QueryMap from a query string (requires url-query feature):

```rust use query_map::QueryMap;

let data = "foo=bar&baz=quux&foo=qux"; let map = data.parse::().unwrap(); let got = map.all("foo").unwrap(); assert_eq!(vec!["bar", "qux"], got); ```