Skip to content

Commit 2d018ee

Browse files
committed
Implement serde serialize
1 parent 98f5828 commit 2d018ee

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/serde_support.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
use std::fmt;
22

3-
use serde::de::{self, Unexpected, Visitor};
3+
use serde::{
4+
de::{self, Unexpected, Visitor},
5+
ser::Serialize,
6+
};
47

58
use crate::NonEmptyString;
69

10+
impl Serialize for NonEmptyString {
11+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12+
where
13+
S: serde::Serializer,
14+
{
15+
serializer.serialize_str(self.get())
16+
}
17+
}
18+
719
struct NonEmptyStringVisitor;
820

921
impl<'de> de::Deserialize<'de> for NonEmptyString {
@@ -48,6 +60,17 @@ mod tests {
4860
use assert_matches::assert_matches;
4961
use serde_json::json;
5062

63+
#[test]
64+
fn serialize_works() {
65+
let value = NonEmptyString("abc".to_owned());
66+
let result = serde_json::to_string(&value);
67+
68+
assert!(result.is_ok());
69+
70+
let json = serde_json::to_string(&json!("abc")).unwrap();
71+
assert_eq!(result.unwrap(), json)
72+
}
73+
5174
#[test]
5275
fn deserialize_works() {
5376
let e: Result<NonEmptyString, _> = serde_json::from_value(json!("abc"));

0 commit comments

Comments
 (0)