Very simple error type - just holds a description of the error. This is useful for human diagnosis and troubleshooting, but not for applications to parse. The justification for this is to deny applications visibility into the communication layer, forcing the application code to act solely on the logical responses that the API provides, promoting abstraction in the application code.
API trait with immutable receivers i.e.
fn api_call(&self, ...)
Trait for decorating an implementation of the API with common pre/post-handling for all request types.
API trait with mutable receivers i.e.
fn api_call(&mut self, ...)
Trait for types which are a placeholder of a value that may become available at some later point in time.