@@ -6,22 +6,22 @@ attribute is used to provide the logic for handling the custom representation.
6
6
7
7
!PLAYGROUND 7185eb211a4822ce97184ae25fedda91
8
8
``` rust
9
- use chrono :: { DateTime , Utc } ;
9
+ use chrono :: NaiveDateTime ;
10
10
use serde :: {Serialize , Deserialize };
11
11
12
12
#[derive(Serialize , Deserialize , Debug )]
13
13
pub struct StructWithCustomDate {
14
14
// DateTime supports Serde out of the box, but uses RFC3339 format. Provide
15
15
// some custom logic to make it use our desired format.
16
16
#[serde(with = " my_date_format" )]
17
- pub timestamp : DateTime < Utc > ,
17
+ pub timestamp : NaiveDateTime ,
18
18
19
19
// Any other fields in the struct.
20
20
pub bidder : String ,
21
21
}
22
22
23
23
mod my_date_format {
24
- use chrono :: { DateTime , Utc , TimeZone } ;
24
+ use chrono :: NaiveDateTime ;
25
25
use serde :: {self , Deserialize , Serializer , Deserializer };
26
26
27
27
const FORMAT : & 'static str = " %Y-%m-%d %H:%M:%S" ;
@@ -34,11 +34,11 @@ mod my_date_format {
34
34
//
35
35
// although it may also be generic over the input types T.
36
36
pub fn serialize <S >(
37
- date : & DateTime < Utc > ,
37
+ date : & NaiveDateTime ,
38
38
serializer : S ,
39
39
) -> Result <S :: Ok , S :: Error >
40
- where
41
- S : Serializer ,
40
+ where
41
+ S : Serializer ,
42
42
{
43
43
let s = format! (" {}" , date . format (FORMAT ));
44
44
serializer . serialize_str (& s )
@@ -53,13 +53,14 @@ mod my_date_format {
53
53
// although it may also be generic over the output types T.
54
54
pub fn deserialize <'de , D >(
55
55
deserializer : D ,
56
- ) -> Result <DateTime < Utc > , D :: Error >
57
- where
58
- D : Deserializer <'de >,
56
+ ) -> Result <NaiveDateTime , D :: Error >
57
+ where
58
+ D : Deserializer <'de >,
59
59
{
60
60
let s = String :: deserialize (deserializer )? ;
61
- Utc . datetime_from_str (& s , FORMAT ). map_err (serde :: de :: Error :: custom )
61
+ NaiveDateTime :: parse_from_str (& s , FORMAT ). map_err (serde :: de :: Error :: custom )
62
62
}
63
+
63
64
}
64
65
65
66
fn main () {
0 commit comments