Skip to main content

Crate multidict

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.