Skip to main content

rust_webx_core/route/
params.rs

1//! HTTP parameter merging for endpoint dispatch.
2
3use serde::de::DeserializeOwned;
4use std::collections::HashMap;
5
6/// Try to build a request from merged route + query parameters when `T: DeserializeOwned`.
7pub fn try_deserialize_from_params<T: DeserializeOwned>(
8    route_params: &HashMap<String, String>,
9    query_params: &HashMap<String, String>,
10) -> Option<T> {
11    let mut map = serde_json::Map::new();
12    for (k, v) in query_params {
13        map.insert(k.clone(), serde_json::Value::String(v.clone()));
14    }
15    for (k, v) in route_params {
16        map.insert(k.clone(), serde_json::Value::String(v.clone()));
17    }
18    serde_json::from_value(serde_json::Value::Object(map)).ok()
19}