7 releases (breaking)
0.7.0 | Jul 15, 2023 |
---|---|
0.6.0 | May 5, 2022 |
0.5.0 | May 4, 2022 |
0.4.0 | Feb 18, 2022 |
0.1.0 | Feb 15, 2022 |
#207 in Encoding
147,173 downloads per month
Used in 30 crates
(5 directly)
29KB
704 lines
QueryMap
QueryMap is a generic wrapper around HashMap<String, Vec> 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:
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);
assert_eq!("bar", map.first("foo").unwrap());
assert_eq!(None, map.first("bar"));
Create a QueryMap from a Serde Value (requires serde
feature):
use query_map::QueryMap;
#[derive(Deserialize)]
struct Test {
data: QueryMap,
}
let json = serde_json::json!({
"data": {
"foo": "bar"
}
});
let test: Test = serde_json::from_value(json).unwrap();
assert_eq!("bar", test.data.first("foo").unwrap());
Create a QueryMap from a query string (requires url-query
feature):
use query_map::QueryMap;
let data = "foo=bar&baz=quux&foo=qux";
let map = data.parse::<QueryMap>().unwrap();
let got = map.all("foo").unwrap();
assert_eq!(vec!["bar", "qux"], got);
Dependencies
~175KB