Crate yaup

source ·
Expand description

§Yaup - Yet Another URL Params crate

Serialize your structures as query parameters. I made this crate because I didn’t find anything that matched the structure of the query parameters used in Meilisearch.

Specificities of this query parameters format:

  • The crate writes the initial ? if there are parameters to send.
  • You can only serialize structures that follow a “key-value” shape, like structures, HashMap, BTreeMap, etc.
  • Sequences (arrays, vectors, tuples, etc) are comma-separated. { doggo: vec!["kefir", "echo"] } serialize as ?doggo=kefir,echo.
  • Empty and null values are not ignored. { doggo: Vec::new(), catto: None } serialize as ?doggo=&catto=null.
  • Return an error if you try to serialize a structure with multiple levels of key-value structures (i.e., an object containing a HashMap for example).

§Example

#[derive(Debug, serde::Serialize)]
enum Filter { New, Registered, Blocked }

#[derive(Debug, serde::Serialize)]
struct Params {
    cursor: Option<usize>,
    per_page: Option<usize>,
    username: String,
    filter: Vec<Filter>,
}

let params = Params {
    cursor: Some(42),
    per_page: None,
    username: String::from("tamo"),
    filter: vec![Filter::New, Filter::Blocked],
};
assert_eq!(
    yaup::to_string(&params).unwrap(),
    "?cursor=42&per_page=null&username=tamo&filter=New,Blocked"
);

§Thanks

This was originally a fork of serde_url_params which is still maintained. Thanks, boxdot, for the initial code.

Everything has been rewritten from scratch for the v0.3.0.

§License

§Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this document by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Structs§

  • A structure for serializing Rust values into URL parameters string.

Enums§

  • Represents all possible errors that can occur when serializing into URL parameters.

Functions§

  • Serialize the given data structure as a String of URL parameters.
  • Serialize the given data structure as a byte vector containing URL parameters.
  • Serialize the given data structure as URL parameters into the IO stream.

Type Aliases§

  • Alias for Result with error type serde_url_params::Error.