Enum RemoteError

Source
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.

Fields

§code: i64
§message: String
§

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§

Source§

impl RemoteError

Source

pub fn custom<S, V>(code: i64, message: S, data: V) -> Self
where S: AsRef<str>, V: Into<Option<Value>>,

Creates a new custom error.

Trait Implementations§

Source§

impl Clone for RemoteError

Source§

fn clone(&self) -> RemoteError

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RemoteError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RemoteError

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<Error> for RemoteError

Source§

fn from(err: JsonError) -> RemoteError

Converts to this type from the input type.
Source§

impl From<RemoteError> for Error

Source§

fn from(err: RemoteError) -> Error

Converts to this type from the input type.
Source§

impl PartialEq for RemoteError

Source§

fn eq(&self, other: &RemoteError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for RemoteError

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RemoteError

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,