Skip to content

Commit cba61da

Browse files
committed
feat: feature flag serde to derive ser/de on proto
1 parent c38c582 commit cba61da

3 files changed

Lines changed: 44 additions & 31 deletions

File tree

Cargo.lock

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ name = "codemp_proto"
2020
prost = "0.14"
2121
tonic = { version = "0.14", default-features = false, features = ["codegen"] }
2222
tonic-prost = "0.14"
23+
serde = { version = "1.0", features = ["derive"], optional = true }
2324

2425
[build-dependencies]
2526
tonic-prost-build = "0.14"
@@ -28,3 +29,4 @@ tonic-prost-build = "0.14"
2829
default = ["client"]
2930
client = ["tonic/transport"]
3031
server = ["tonic/transport"]
32+
serde = ["dep:serde"]

build.rs

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,18 @@
11
fn main() -> Result<(), Box<dyn std::error::Error>> {
2-
let server = {
3-
#[cfg(feature = "server")]
4-
{
5-
true
6-
}
7-
#[cfg(not(feature = "server"))]
8-
{
9-
false
10-
}
11-
};
2+
let server = cfg!(feature = "server");
3+
let client = cfg!(feature = "client");
4+
let transport = cfg!(any(feature = "server", feature = "client"));
125

13-
let client = {
14-
#[cfg(feature = "client")]
15-
{
16-
true
17-
}
18-
#[cfg(not(feature = "client"))]
19-
{
20-
false
21-
}
22-
};
6+
#[allow(unused_mut)]
7+
let mut builder = tonic_prost_build::configure();
238

24-
let transport = {
25-
#[cfg(any(feature = "server", feature = "client"))]
26-
{
27-
true
28-
}
29-
#[cfg(not(any(feature = "server", feature = "client")))]
30-
{
31-
false
32-
}
33-
};
9+
#[cfg(feature = "serde")]
10+
{
11+
builder = builder
12+
.type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]");
13+
}
3414

35-
Ok(tonic_prost_build::configure()
15+
Ok(builder
3616
.build_server(server)
3717
.build_client(client)
3818
.build_transport(transport)

0 commit comments

Comments
 (0)