Rust custom derive to automatically implement serialization to http query params for arbitrary structs. A simple #[derive(QueryParams)] will generate a function to_query_params for your struct.
#[macro_use]
extern crate query_params;
#[derive(QueryParams)]
struct PullRequestsParametersApi {
    page: i32,
    sort: bool,
    direction: String,
    state: Vec<String>,
    // .. other interesting fields ..
} 
fn main() {
    let pr = PullRequestsParametersApi {
        page: 2,
        sort: true,
        direction: "asc",
        state: vec!["open".to_string(), "closed".to_string()],
    }
    println!("{}", pr.to_query_params()); // => ?page=2&sort=true&direction=asc&state=open,closed
}It's as simple as two steps:
- Add query_paramsto yourCargo.toml
- 
manually 
- 
or with cargo-edit: cargo add derive_builder
- Annotate your struct with #[derive(QueryParams)]
- Tuple structs and unit structs are not supported as they have no field names.
Detailed explaination of all features and tips for troubleshooting.
Feel free to make a pull request 😃