[][src]Enum xi_rpc::RemoteError

pub enum RemoteError {
    InvalidRequest(Option<Value>),
    Custom {
        code: i64,
        message: String,
        data: Option<Value>,
    },
    Unknown(Value),
}

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 of Custom

code: i64message: Stringdata: Option<Value>
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.

Methods

impl RemoteError[src]

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

Creates a new custom error.

Trait Implementations

impl PartialEq<RemoteError> for RemoteError[src]

impl From<Error> for RemoteError[src]

impl From<RemoteError> for Error[src]

impl Clone for RemoteError[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for RemoteError[src]

impl Serialize for RemoteError[src]

impl<'de> Deserialize<'de> for RemoteError[src]

Auto Trait Implementations

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

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