schwab-developer 0.1.0

A library for Charles Schwab API.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use serde::Serialize;

pub fn query_params<T: Serialize>(obj: T) -> anyhow::Result<Vec<(String, String)>> {
    let value = serde_json::to_value(obj)?;
    if let serde_json::Value::Object(map) = value {
        let result: Vec<(String, String)> = map.into_iter().filter_map(|(k, v)| {
            match v {
                serde_json::Value::Null => None,
                serde_json::Value::String(s) => Some((k, s)),
                _ => Some((k, v.to_string())),
            }
        }).collect();
        Ok(result)
    } else {
        anyhow::bail!("The value is not an object!");
    }
}