Crate multidict

Source
Expand description

§multidict

The multidict crate was inspired by Python MultiDict library multidict is useful for working with HTTP headers, URL query, form-data args etc HTTP Headers and URL query string require specific data structure: multidict. It behaves mostly like a regular map but it may have several values for the same key and preserves insertion ordering

§Examples

Basic MultiDict creation and filling with data

use multidict::{MultiDict, MultiElement};

let mut map = MultiDict::new();
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_1".to_string(),
        });
println!("{map}"); // MultiDict < "some_key":"some_value_1" >
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_2".to_string(),
        });
println!("{map}");
// MultiDict < "some_key":"some_value_1", "some_key":"some_value_2" >

Get all key-values pairs for key

use multidict::{MultiDict, MultiElement};

let mut map = MultiDict::new();
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_1".to_string(),
        });
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_2".to_string(),
        });
map.add(MultiElement {
            key: "some_other_key".to_string(),
            value: "some_value_3".to_string(),
        });
println!("{}", map.getall("some_key").unwrap());
// MultiDict < "some_key":"some_value_1", "some_key":"some_value_2" >

MultiDict debug output

use multidict::{MultiDict, MultiElement};

let mut map = MultiDict::new();
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_1".to_string(),
        });
map.add(MultiElement {
            key: "some_key".to_string(),
            value: "some_value_2".to_string(),
        });
map.add(MultiElement {
            key: "some_other_key".to_string(),
            value: "some_value_3".to_string(),
        });
println!("{map:?}");
// MultiDict { elements: [
//  MultiElement { key: "some_key", value: "some_value_1" },
//  MultiElement { key: "some_key", value: "some_value_2" },
//  MultiElement { key: "some_other_key", value: "some_value_3" }
// ] }

Structs§

MultiDict
MultiDict - structure which enable to user store multiple similar keys with different values in map-like structure.
MultiElement
MultiElement - element of MultiDict structure Vec.