Skip to content

Commit 710129a

Browse files
committed
fix: fix test and clippy
1 parent f157382 commit 710129a

File tree

2 files changed

+50
-19
lines changed

2 files changed

+50
-19
lines changed

crates/rmcp/src/model/extension.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Copied from http
22
//!
3-
//! source: https://github.com/hyperium/http/blob/master/src/extensions.rs
3+
//! source: <https://github.com/hyperium/http/blob/master/src/extensions.rs>
44
55
use std::{
66
any::{Any, TypeId},

crates/rmcp/src/model/serde_impl.rs

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ use serde::{Deserialize, Serialize};
44

55
use super::{Extensions, Meta, Notification, NotificationNoParam, Request, RequestNoParam};
66

7-
// serde helper type
87
#[derive(Serialize, Deserialize)]
9-
struct WithMeta<'a, T> {
8+
struct WithMeta<'a, M, P> {
9+
method: M,
10+
params: P,
11+
#[serde(skip_serializing_if = "Option::is_none")]
1012
_meta: Option<Cow<'a, Meta>>,
11-
#[serde(flatten)]
12-
_rest: T,
1313
}
1414

1515
impl<M, R> Serialize for Request<M, R>
@@ -23,8 +23,14 @@ where
2323
{
2424
let extensions = &self.extensions;
2525
let _meta = extensions.get::<Meta>().map(Cow::Borrowed);
26-
let body = WithMeta { _meta, _rest: self };
27-
WithMeta::serialize(&body, serializer)
26+
WithMeta::serialize(
27+
&WithMeta {
28+
method: &self.method,
29+
params: &self.params,
30+
_meta,
31+
},
32+
serializer,
33+
)
2834
}
2935
}
3036

@@ -45,11 +51,19 @@ where
4551
}
4652
Ok(Request {
4753
extensions,
48-
..body._rest
54+
method: body.method,
55+
params: body.params,
4956
})
5057
}
5158
}
5259

60+
#[derive(Serialize, Deserialize)]
61+
struct NoParamWithMeta<'a, M> {
62+
method: M,
63+
#[serde(skip_serializing_if = "Option::is_none")]
64+
_meta: Option<Cow<'a, Meta>>,
65+
}
66+
5367
impl<M> Serialize for RequestNoParam<M>
5468
where
5569
M: Serialize,
@@ -60,8 +74,13 @@ where
6074
{
6175
let extensions = &self.extensions;
6276
let _meta = extensions.get::<Meta>().map(Cow::Borrowed);
63-
let body = WithMeta { _meta, _rest: self };
64-
WithMeta::serialize(&body, serializer)
77+
NoParamWithMeta::serialize(
78+
&NoParamWithMeta {
79+
method: &self.method,
80+
_meta,
81+
},
82+
serializer,
83+
)
6584
}
6685
}
6786

@@ -73,15 +92,15 @@ where
7392
where
7493
D: serde::Deserializer<'de>,
7594
{
76-
let body = WithMeta::deserialize(deserializer)?;
95+
let body = NoParamWithMeta::deserialize(deserializer)?;
7796
let _meta = body._meta.map(|m| m.into_owned());
7897
let mut extensions = Extensions::new();
7998
if let Some(meta) = _meta {
8099
extensions.insert(meta);
81100
}
82101
Ok(RequestNoParam {
83102
extensions,
84-
..body._rest
103+
method: body.method,
85104
})
86105
}
87106
}
@@ -97,8 +116,14 @@ where
97116
{
98117
let extensions = &self.extensions;
99118
let _meta = extensions.get::<Meta>().map(Cow::Borrowed);
100-
let body = WithMeta { _meta, _rest: self };
101-
WithMeta::serialize(&body, serializer)
119+
WithMeta::serialize(
120+
&WithMeta {
121+
method: &self.method,
122+
params: &self.params,
123+
_meta,
124+
},
125+
serializer,
126+
)
102127
}
103128
}
104129

@@ -119,7 +144,8 @@ where
119144
}
120145
Ok(Notification {
121146
extensions,
122-
..body._rest
147+
method: body.method,
148+
params: body.params,
123149
})
124150
}
125151
}
@@ -134,8 +160,13 @@ where
134160
{
135161
let extensions = &self.extensions;
136162
let _meta = extensions.get::<Meta>().map(Cow::Borrowed);
137-
let body = WithMeta { _meta, _rest: self };
138-
WithMeta::serialize(&body, serializer)
163+
NoParamWithMeta::serialize(
164+
&NoParamWithMeta {
165+
method: &self.method,
166+
_meta,
167+
},
168+
serializer,
169+
)
139170
}
140171
}
141172

@@ -147,15 +178,15 @@ where
147178
where
148179
D: serde::Deserializer<'de>,
149180
{
150-
let body = WithMeta::deserialize(deserializer)?;
181+
let body = NoParamWithMeta::deserialize(deserializer)?;
151182
let _meta = body._meta.map(|m| m.into_owned());
152183
let mut extensions = Extensions::new();
153184
if let Some(meta) = _meta {
154185
extensions.insert(meta);
155186
}
156187
Ok(NotificationNoParam {
157188
extensions,
158-
..body._rest
189+
method: body.method,
159190
})
160191
}
161192
}

0 commit comments

Comments
 (0)