]> Untitled Git - bdk/commitdiff
[wallet] Nicer interface for WalletExport
authorAlekos Filini <alekos.filini@gmail.com>
Mon, 10 Aug 2020 11:20:48 +0000 (13:20 +0200)
committerAlekos Filini <alekos.filini@gmail.com>
Mon, 10 Aug 2020 11:20:48 +0000 (13:20 +0200)
src/wallet/export.rs

index dac3cfd97d193b96bcb0584ea58df7ec06bd8e1c..f90200faba62ed33c908f57057b47d69b98b75df 100644 (file)
@@ -15,6 +15,20 @@ pub struct WalletExport {
     pub label: String,
 }
 
+impl ToString for WalletExport {
+    fn to_string(&self) -> String {
+        serde_json::to_string(self).unwrap()
+    }
+}
+
+impl FromStr for WalletExport {
+    type Err = serde_json::Error;
+
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        serde_json::from_str(s)
+    }
+}
+
 impl WalletExport {
     pub fn export_wallet<B: Blockchain, D: BatchDatabase>(
         wallet: &Wallet<B, D>,
@@ -217,7 +231,7 @@ mod test {
         .unwrap();
         let export = WalletExport::export_wallet(&wallet, "Test Label", true).unwrap();
 
-        assert_eq!(serde_json::to_string(&export).unwrap(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
+        assert_eq!(export.to_string(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
     }
 
     #[test]
@@ -226,7 +240,7 @@ mod test {
         let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
 
         let import_str = "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}";
-        let export: WalletExport = serde_json::from_str(import_str).unwrap();
+        let export = WalletExport::from_str(import_str).unwrap();
 
         assert_eq!(export.descriptor(), descriptor);
         assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));