Skip to content

Commit 983f786

Browse files
Merge pull request #489 from ijackson/string-ser-unify
deserialize: strings: Introduce string_serialize_via_display macro
2 parents 5ff62b7 + 0ea14aa commit 983f786

File tree

1 file changed

+20
-51
lines changed

1 file changed

+20
-51
lines changed

src/ser.rs

Lines changed: 20 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,13 @@ impl<'a> ser::SerializeStructVariant for &'a mut ConfigSerializer {
417417

418418
pub struct StringKeySerializer;
419419

420+
/// Define `$emthod`, `serialize_foo`, taking `$type` and serialising it via [`Display`]
421+
macro_rules! string_serialize_via_display { { $method:ident, $type:ty } => {
422+
fn $method(self, v: $type) -> Result<Self::Ok> {
423+
Ok(v.to_string())
424+
}
425+
} }
426+
420427
impl ser::Serializer for StringKeySerializer {
421428
type Ok = String;
422429
type Error = ConfigError;
@@ -428,57 +435,19 @@ impl ser::Serializer for StringKeySerializer {
428435
type SerializeStruct = Self;
429436
type SerializeStructVariant = Self;
430437

431-
fn serialize_bool(self, v: bool) -> Result<Self::Ok> {
432-
Ok(v.to_string())
433-
}
434-
435-
fn serialize_i8(self, v: i8) -> Result<Self::Ok> {
436-
Ok(v.to_string())
437-
}
438-
439-
fn serialize_i16(self, v: i16) -> Result<Self::Ok> {
440-
Ok(v.to_string())
441-
}
442-
443-
fn serialize_i32(self, v: i32) -> Result<Self::Ok> {
444-
Ok(v.to_string())
445-
}
446-
447-
fn serialize_i64(self, v: i64) -> Result<Self::Ok> {
448-
Ok(v.to_string())
449-
}
450-
451-
fn serialize_u8(self, v: u8) -> Result<Self::Ok> {
452-
Ok(v.to_string())
453-
}
454-
455-
fn serialize_u16(self, v: u16) -> Result<Self::Ok> {
456-
Ok(v.to_string())
457-
}
458-
459-
fn serialize_u32(self, v: u32) -> Result<Self::Ok> {
460-
Ok(v.to_string())
461-
}
462-
463-
fn serialize_u64(self, v: u64) -> Result<Self::Ok> {
464-
Ok(v.to_string())
465-
}
466-
467-
fn serialize_f32(self, v: f32) -> Result<Self::Ok> {
468-
Ok(v.to_string())
469-
}
470-
471-
fn serialize_f64(self, v: f64) -> Result<Self::Ok> {
472-
Ok(v.to_string())
473-
}
474-
475-
fn serialize_char(self, v: char) -> Result<Self::Ok> {
476-
Ok(v.to_string())
477-
}
478-
479-
fn serialize_str(self, v: &str) -> Result<Self::Ok> {
480-
Ok(v.to_string())
481-
}
438+
string_serialize_via_display!(serialize_bool, bool);
439+
string_serialize_via_display!(serialize_i8, i8);
440+
string_serialize_via_display!(serialize_i16, i16);
441+
string_serialize_via_display!(serialize_i32, i32);
442+
string_serialize_via_display!(serialize_i64, i64);
443+
string_serialize_via_display!(serialize_u8, u8);
444+
string_serialize_via_display!(serialize_u16, u16);
445+
string_serialize_via_display!(serialize_u32, u32);
446+
string_serialize_via_display!(serialize_u64, u64);
447+
string_serialize_via_display!(serialize_f32, f32);
448+
string_serialize_via_display!(serialize_f64, f64);
449+
string_serialize_via_display!(serialize_char, char);
450+
string_serialize_via_display!(serialize_str, &str);
482451

483452
fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok> {
484453
Ok(String::from_utf8_lossy(v).to_string())

0 commit comments

Comments
 (0)