Skip to content

Commit 79cf854

Browse files
committed
Support optional serde feature.
1 parent 2ebf2b1 commit 79cf854

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ rust-version = "1.34.2"
1414

1515
[dependencies]
1616
base64 = "0.13.0"
17+
serde = { version = "1", optional = true, features = ["serde_derive"] }
1718

1819
[dev-dependencies]
1920
criterion = "0.3.0"
21+
serde_json = "1"
2022

2123
[[bench]]
2224
name = "pem_benchmark"

src/lib.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@
103103
unused_qualifications
104104
)]
105105

106+
#[cfg(feature = "serde")]
107+
use serde::{Serialize, Deserialize};
108+
106109
mod errors;
107110
mod parser;
108111
use parser::{parse_captures, parse_captures_iter, Captures};
@@ -131,6 +134,7 @@ pub struct EncodeConfig {
131134

132135
/// A representation of Pem-encoded data
133136
#[derive(PartialEq, Debug, Clone)]
137+
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
134138
pub struct Pem {
135139
/// The tag extracted from the Pem-encoded data
136140
pub tag: String,
@@ -613,4 +617,16 @@ RzHX0lkJl9Stshd/7Gbt65/QYq+v+xvAeT0CoyIg
613617

614618
assert_eq!(SAMPLE_LF, encoded);
615619
}
620+
621+
#[cfg(feature = "serde")]
622+
#[test]
623+
fn test_serde() {
624+
let pem = Pem {
625+
tag: String::from("Mock tag"),
626+
contents: "Mock contents".as_bytes().to_vec(),
627+
};
628+
let value = serde_json::to_string_pretty(&pem).unwrap();
629+
let result = serde_json::from_str(&value).unwrap();
630+
assert_eq!(pem, result);
631+
}
616632
}

0 commit comments

Comments
 (0)