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_params
to 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 😃