pub enum JsonRpcMessage<Req = Request, Resp = Map<String, Value>, Noti = Notification> {
Request(JsonRpcRequest<Req>),
Response(JsonRpcResponse<Resp>),
Notification(JsonRpcNotification<Noti>),
Error(JsonRpcError),
}Expand description
Represents any JSON-RPC message that can be sent or received.
This enum covers all possible message types in the JSON-RPC protocol: individual requests/responses, notifications, and errors. It serves as the top-level message container for MCP communication.
Variants§
Request(JsonRpcRequest<Req>)
A single request expecting a response
Response(JsonRpcResponse<Resp>)
A response to a previous request
Notification(JsonRpcNotification<Noti>)
A one-way notification (no response expected)
Error(JsonRpcError)
An error response
Implementations§
Source§impl<Req, Resp, Noti> JsonRpcMessage<Req, Resp, Noti>where
Req: GetExtensions,
Noti: GetExtensions,
impl<Req, Resp, Noti> JsonRpcMessage<Req, Resp, Noti>where
Req: GetExtensions,
Noti: GetExtensions,
pub fn insert_extension<T>(&mut self, value: T)
Source§impl<Req, Resp, Not> JsonRpcMessage<Req, Resp, Not>
impl<Req, Resp, Not> JsonRpcMessage<Req, Resp, Not>
pub const fn request( request: Req, id: NumberOrString, ) -> JsonRpcMessage<Req, Resp, Not>
pub const fn response( response: Resp, id: NumberOrString, ) -> JsonRpcMessage<Req, Resp, Not>
pub const fn error( error: ErrorData, id: Option<NumberOrString>, ) -> JsonRpcMessage<Req, Resp, Not>
pub const fn notification(notification: Not) -> JsonRpcMessage<Req, Resp, Not>
pub fn into_request(self) -> Option<(Req, NumberOrString)>
pub fn into_response(self) -> Option<(Resp, NumberOrString)>
pub fn into_notification(self) -> Option<Not>
pub fn into_error(self) -> Option<(ErrorData, Option<NumberOrString>)>
pub fn into_result( self, ) -> Option<(Result<Resp, ErrorData>, Option<NumberOrString>)>
Trait Implementations§
Source§impl<Req, Resp, Noti> Clone for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Clone for JsonRpcMessage<Req, Resp, Noti>
Source§fn clone(&self) -> JsonRpcMessage<Req, Resp, Noti>
fn clone(&self) -> JsonRpcMessage<Req, Resp, Noti>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Req, Resp, Noti> Debug for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Debug for JsonRpcMessage<Req, Resp, Noti>
Source§impl<'de, Req, Resp, Noti> Deserialize<'de> for JsonRpcMessage<Req, Resp, Noti>
impl<'de, Req, Resp, Noti> Deserialize<'de> for JsonRpcMessage<Req, Resp, Noti>
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<JsonRpcMessage<Req, Resp, Noti>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<JsonRpcMessage<Req, Resp, Noti>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<Req, Resp, Noti> JsonSchema for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> JsonSchema for JsonRpcMessage<Req, Resp, Noti>
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreSource§impl<Req, Resp, Noti> PartialEq for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> PartialEq for JsonRpcMessage<Req, Resp, Noti>
Source§impl<Req, Resp, Noti> Serialize for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Serialize for JsonRpcMessage<Req, Resp, Noti>
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl<Req, Resp, Noti> StructuralPartialEq for JsonRpcMessage<Req, Resp, Noti>
Auto Trait Implementations§
impl<Req, Resp, Noti> Freeze for JsonRpcMessage<Req, Resp, Noti>where
JsonRpcRequest<Req>: Freeze,
JsonRpcResponse<Resp>: Freeze,
JsonRpcNotification<Noti>: Freeze,
impl<Req, Resp, Noti> RefUnwindSafe for JsonRpcMessage<Req, Resp, Noti>where
JsonRpcRequest<Req>: RefUnwindSafe,
JsonRpcResponse<Resp>: RefUnwindSafe,
JsonRpcNotification<Noti>: RefUnwindSafe,
impl<Req, Resp, Noti> Send for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Sync for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Unpin for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> UnsafeUnpin for JsonRpcMessage<Req, Resp, Noti>where
JsonRpcRequest<Req>: UnsafeUnpin,
JsonRpcResponse<Resp>: UnsafeUnpin,
JsonRpcNotification<Noti>: UnsafeUnpin,
impl<Req, Resp, Noti> UnwindSafe for JsonRpcMessage<Req, Resp, Noti>where
JsonRpcRequest<Req>: UnwindSafe,
JsonRpcResponse<Resp>: UnwindSafe,
JsonRpcNotification<Noti>: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.