Skip to content

Commit 67f74b1

Browse files
committed
Add serde feature flag to prost-types
Adds "serde_deserialize", "serde_serialize" and "serde" flags to prost-types. This will allow users to enable serde support to the well known types. closes #852
1 parent 846c452 commit 67f74b1

File tree

4 files changed

+130
-0
lines changed

4 files changed

+130
-0
lines changed

prost-types/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@ doctest = false
1616
default = ["std"]
1717
std = ["prost/std"]
1818
arbitrary = ["dep:arbitrary"]
19+
serde = ["serde_serialize", "serde_deserialize"]
20+
serde_serialize = ["std", "dep:serde"]
21+
serde_deserialize = ["std", "dep:serde"]
1922

2023
[dependencies]
2124
prost = { version = "0.13.5", path = "../prost", default-features = false, features = ["prost-derive"] }
2225
arbitrary = { version = "1.4", features = ["derive"], optional = true }
2326
chrono = { version = "0.4.34", default-features = false, optional = true }
27+
serde = { version = "1.0.218", default-features = false, optional = true, features = ["derive", "std"] }
2428

2529
[dev-dependencies]
2630
proptest = "1"

prost-types/src/compiler.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// This file is @generated by prost-build.
22
/// The version number of protocol compiler.
33
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
4+
#[cfg_attr(feature = "serde_serialize", derive(serde::Serialize))]
5+
#[cfg_attr(feature = "serde_deserialize", derive(serde::Deserialize))]
46
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
57
pub struct Version {
68
#[prost(int32, optional, tag = "1")]
@@ -16,6 +18,8 @@ pub struct Version {
1618
}
1719
/// An encoded CodeGeneratorRequest is written to the plugin's stdin.
1820
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
21+
#[cfg_attr(feature = "serde_serialize", derive(serde::Serialize))]
22+
#[cfg_attr(feature = "serde_deserialize", derive(serde::Deserialize))]
1923
#[derive(Clone, PartialEq, ::prost::Message)]
2024
pub struct CodeGeneratorRequest {
2125
/// The .proto files that were explicitly listed on the command-line. The
@@ -48,6 +52,8 @@ pub struct CodeGeneratorRequest {
4852
}
4953
/// The plugin writes an encoded CodeGeneratorResponse to stdout.
5054
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
55+
#[cfg_attr(feature = "serde_serialize", derive(serde::Serialize))]
56+
#[cfg_attr(feature = "serde_deserialize", derive(serde::Deserialize))]
5157
#[derive(Clone, PartialEq, ::prost::Message)]
5258
pub struct CodeGeneratorResponse {
5359
/// Error message. If non-empty, code generation failed. The plugin process
@@ -71,6 +77,8 @@ pub struct CodeGeneratorResponse {
7177
pub mod code_generator_response {
7278
/// Represents a single generated file.
7379
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
80+
#[cfg_attr(feature = "serde_serialize", derive(serde::Serialize))]
81+
#[cfg_attr(feature = "serde_deserialize", derive(serde::Deserialize))]
7482
#[derive(Clone, PartialEq, ::prost::Message)]
7583
pub struct File {
7684
/// The file name, relative to the output directory. The name must not
@@ -136,6 +144,8 @@ pub mod code_generator_response {
136144
}
137145
/// Sync with code_generator.h.
138146
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
147+
#[cfg_attr(feature = "serde_serialize", derive(serde::Serialize))]
148+
#[cfg_attr(feature = "serde_deserialize", derive(serde::Deserialize))]
139149
#[derive(
140150
Clone,
141151
Copy,

0 commit comments

Comments
 (0)