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 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RemoteError
impl Debug for RemoteError
Source§impl<'de> Deserialize<'de> for RemoteError
impl<'de> Deserialize<'de> for RemoteError
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl From<Error> for RemoteError
impl From<Error> for RemoteError
Source§fn from(err: JsonError) -> RemoteError
fn from(err: JsonError) -> RemoteError
Source§impl From<RemoteError> for Error
impl From<RemoteError> for Error
Source§fn from(err: RemoteError) -> Error
fn from(err: RemoteError) -> Error
Source§impl PartialEq for RemoteError
impl PartialEq for RemoteError
Source§fn eq(&self, other: &RemoteError) -> bool
fn eq(&self, other: &RemoteError) -> bool
self and other values to be equal, and is used by ==.