Remove almost all the methods around Response / ResponseIter. I didn't think these were pulling their weight given the extra complexity.
Use thiserror to generate the Error type implementation. This involved removing the hard-deprecated fn description method.
Remove all the lifetimes inside various structs (e.g. UserID, ParamList &c). The extra complexity of handling these lifetimes was making refactoring very tricky, and the performance gain is minimal
pull the rate limit data into it's own RateLimitStatus type with the help of #[serde(flatten)]
made FutureResult just an alias for Pin<Box<dyn Future<Output=Result<T>>>>. First step to removing as many Future and Stream implementations as possible and just using async fn instead
Big grab bag of changes.
Response
/ResponseIter
. I didn't think these were pulling their weight given the extra complexity.thiserror
to generate theError
type implementation. This involved removing the hard-deprecatedfn description
method.UserID
,ParamList
&c). The extra complexity of handling these lifetimes was making refactoring very tricky, and the performance gain is minimalRateLimitStatus
type with the help of#[serde(flatten)]
FutureResult
just an alias forPin<Box<dyn Future<Output=Result<T>>>>
. First step to removing as manyFuture
andStream
implementations as possible and just usingasync fn
instead