pub enum RemoteError {
InvalidRequest(Option<Value>),
Custom {
code: i64,
message: String,
data: Option<Value>,
},
Unknown(Value),
}
Expand description
Errors that can be received from the other side of the RPC channel.
This type is intended to go over the wire. And by convention
should Serialize
as a JSON object with “code”, “message”,
and optionally “data” fields.
The xi RPC protocol defines one error: RemoteError::InvalidRequest
,
represented by error code -32600
; however codes in the range
-32700 ... -32000
(inclusive) are reserved for compatability with
the JSON-RPC spec.
§Examples
An invalid request:
use xi_rpc::RemoteError;
use serde_json::Value;
let json = r#"{
"code": -32600,
"message": "Invalid request",
"data": "Additional details"
}"#;
let err = serde_json::from_str::<RemoteError>(&json).unwrap();
assert_eq!(err,
RemoteError::InvalidRequest(
Some(Value::String("Additional details".into()))));
A custom error:
use xi_rpc::RemoteError;
use serde_json::Value;
let json = r#"{
"code": 404,
"message": "Not Found"
}"#;
let err = serde_json::from_str::<RemoteError>(&json).unwrap();
assert_eq!(err, RemoteError::custom(404, "Not Found", None));
Variants§
InvalidRequest(Option<Value>)
The JSON was valid, but was not a correctly formed request.
This Error is used internally, and should not be returned by clients.
Custom
A custom error, defined by the client.
Unknown(Value)
An error that cannot be represented by an error object.
This error is intended to accommodate clients that return arbitrary error values. It should not be used for new errors.
Implementations§
Trait Implementations§
Source§impl Clone for RemoteError
impl Clone for RemoteError
Source§fn clone(&self) -> RemoteError
fn clone(&self) -> RemoteError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more