10
10
11
11
use serde:: { Deserialize , Serialize } ;
12
12
13
- /// A struct representating our serialised form
14
- #[ derive( Deserialize , Serialize ) ]
15
- pub struct DataSerde {
16
- number : i32 ,
17
- string : String ,
18
- }
19
-
20
- impl From < & SerialisationRust > for DataSerde {
21
- fn from ( value : & SerialisationRust ) -> DataSerde {
22
- DataSerde {
23
- number : value. number ,
24
- string : value. string . to_string ( ) ,
25
- }
26
- }
27
- }
28
-
29
13
/// A CXX-Qt bridge which shows how use serde for (de)serialization of the data in a QObjects' QPROPERTY's
30
14
#[ cxx_qt:: bridge( cxx_file_stem = "serialisation" ) ]
31
15
pub mod qobject {
@@ -63,6 +47,7 @@ use cxx_qt::CxxQtType;
63
47
use cxx_qt_lib:: QString ;
64
48
65
49
/// A QObject which can be serialised
50
+ #[ derive( Serialize , Deserialize ) ]
66
51
pub struct SerialisationRust {
67
52
/// The number Q_PROPERTY
68
53
pub number : i32 ,
@@ -73,25 +58,14 @@ pub struct SerialisationRust {
73
58
impl Default for SerialisationRust {
74
59
fn default ( ) -> Self {
75
60
let string = r#"{"number": 4, "string": "Hello World!"}"# ;
76
- let data_serde: DataSerde = serde_json:: from_str ( string) . unwrap ( ) ;
77
- data_serde. into ( )
78
- }
79
- }
80
-
81
- impl From < DataSerde > for SerialisationRust {
82
- fn from ( value : DataSerde ) -> Self {
83
- Self {
84
- number : value. number ,
85
- string : QString :: from ( & value. string ) ,
86
- }
61
+ serde_json:: from_str ( string) . unwrap ( )
87
62
}
88
63
}
89
64
90
65
impl qobject:: Serialisation {
91
66
/// Retrieve the JSON form of this QObject
92
67
pub fn as_json_str ( self : Pin < & mut Self > ) -> QString {
93
- let data_serde = DataSerde :: from ( self . rust ( ) ) ;
94
- match serde_json:: to_string ( & data_serde) {
68
+ match serde_json:: to_string ( & self . rust ( ) ) {
95
69
Ok ( data_string) => QString :: from ( & data_string) ,
96
70
Err ( err) => {
97
71
self . error ( QString :: from ( & err. to_string ( ) ) ) ;
@@ -102,11 +76,11 @@ impl qobject::Serialisation {
102
76
103
77
/// From a given JSON string try to load values for the Q_PROPERTYs
104
78
// ANCHOR: book_grab_values
105
- pub fn from_json_str ( mut self : Pin < & mut Self > , string : & QString ) {
106
- match serde_json:: from_str :: < DataSerde > ( & string . to_string ( ) ) {
79
+ pub fn from_json_str ( mut self : Pin < & mut Self > , qstring : & QString ) {
80
+ match serde_json:: from_str :: < SerialisationRust > ( & qstring . to_string ( ) ) {
107
81
Ok ( data_serde) => {
108
82
self . as_mut ( ) . set_number ( data_serde. number ) ;
109
- self . as_mut ( ) . set_string ( QString :: from ( & data_serde. string ) ) ;
83
+ self . as_mut ( ) . set_string ( data_serde. string ) ;
110
84
}
111
85
Err ( err) => {
112
86
self . error ( QString :: from ( & err. to_string ( ) ) ) ;
0 commit comments