Rust fmt
This commit is contained in:
		
							parent
							
								
									b5559767db
								
							
						
					
					
						commit
						303a1703c9
					
				| @ -24,8 +24,14 @@ | |||||||
| //! /* Updating an empty sparsechain will always succeed */
 | //! /* Updating an empty sparsechain will always succeed */
 | ||||||
| //!
 | //!
 | ||||||
| //! let update = SparseChain::from_checkpoints(vec![
 | //! let update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     BlockId { height: 1, hash: hash_a },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 2, hash: hash_b },
 | //!         height: 1,
 | ||||||
|  | //!         hash: hash_a,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 2,
 | ||||||
|  | //!         hash: hash_b,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .apply_update(update)
 | //!     .apply_update(update)
 | ||||||
| @ -34,8 +40,14 @@ | |||||||
| //! /* To update a non-empty sparsechain, the update must connect */
 | //! /* To update a non-empty sparsechain, the update must connect */
 | ||||||
| //!
 | //!
 | ||||||
| //! let update = SparseChain::from_checkpoints(vec![
 | //! let update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     BlockId { height: 2, hash: hash_b },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 3, hash: hash_c },
 | //!         height: 2,
 | ||||||
|  | //!         hash: hash_b,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 3,
 | ||||||
|  | //!         hash: hash_c,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .apply_update(update)
 | //!     .apply_update(update)
 | ||||||
| @ -56,17 +68,29 @@ | |||||||
| //! # let hash_d = new_hash::<BlockHash>("d");
 | //! # let hash_d = new_hash::<BlockHash>("d");
 | ||||||
| //! // our sparsechain has 2 checkpoints
 | //! // our sparsechain has 2 checkpoints
 | ||||||
| //! let chain = SparseChain::<TxHeight>::from_checkpoints(vec![
 | //! let chain = SparseChain::<TxHeight>::from_checkpoints(vec![
 | ||||||
| //!     BlockId { height: 1, hash: hash_a },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 2, hash: hash_b },
 | //!         height: 1,
 | ||||||
|  | //!         hash: hash_a,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 2,
 | ||||||
|  | //!         hash: hash_b,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //!
 | //!
 | ||||||
| //! /* Example of an ambiguous update that does not fully connect */
 | //! /* Example of an ambiguous update that does not fully connect */
 | ||||||
| //!
 | //!
 | ||||||
| //! let ambiguous_update = SparseChain::from_checkpoints(vec![
 | //! let ambiguous_update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     // the update sort of "connects" at checkpoint 1, but...
 | //!     // the update sort of "connects" at checkpoint 1, but...
 | ||||||
| //!     BlockId { height: 1, hash: hash_a },
 | //!     BlockId {
 | ||||||
|  | //!         height: 1,
 | ||||||
|  | //!         hash: hash_a,
 | ||||||
|  | //!     },
 | ||||||
| //!     // we cannot determine whether checkpoint 3 connects with checkpoint 2
 | //!     // we cannot determine whether checkpoint 3 connects with checkpoint 2
 | ||||||
| //!     BlockId { height: 3, hash: hash_c },
 | //!     BlockId {
 | ||||||
|  | //!         height: 3,
 | ||||||
|  | //!         hash: hash_c,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .determine_changeset(&ambiguous_update)
 | //!     .determine_changeset(&ambiguous_update)
 | ||||||
| @ -76,8 +100,14 @@ | |||||||
| //!
 | //!
 | ||||||
| //! let disconnected_update = SparseChain::from_checkpoints(vec![
 | //! let disconnected_update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     // the last checkpoint in chain is 2, so 3 and 4 do not connect
 | //!     // the last checkpoint in chain is 2, so 3 and 4 do not connect
 | ||||||
| //!     BlockId { height: 3, hash: hash_c },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 4, hash: hash_d },
 | //!         height: 3,
 | ||||||
|  | //!         hash: hash_c,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 4,
 | ||||||
|  | //!         hash: hash_d,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .determine_changeset(&disconnected_update)
 | //!     .determine_changeset(&disconnected_update)
 | ||||||
| @ -97,14 +127,21 @@ | |||||||
| //! # let hash_c = new_hash::<BlockHash>("c");
 | //! # let hash_c = new_hash::<BlockHash>("c");
 | ||||||
| //! # let hash_d = new_hash::<BlockHash>("d");
 | //! # let hash_d = new_hash::<BlockHash>("d");
 | ||||||
| //! // our chain has a single checkpoint at height 11
 | //! // our chain has a single checkpoint at height 11
 | ||||||
| //! let mut chain = SparseChain::<TxHeight>::from_checkpoints(vec![
 | //! let mut chain = SparseChain::<TxHeight>::from_checkpoints(vec![BlockId {
 | ||||||
| //!     BlockId { height: 11, hash: hash_a },
 | //!     height: 11,
 | ||||||
| //! ]);
 | //!     hash: hash_a,
 | ||||||
|  | //! }]);
 | ||||||
| //!
 | //!
 | ||||||
| //! // we detect a reorg at height 11, and we introduce a new checkpoint at height 12
 | //! // we detect a reorg at height 11, and we introduce a new checkpoint at height 12
 | ||||||
| //! let update = SparseChain::from_checkpoints(vec![
 | //! let update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     BlockId { height: 11, hash: hash_b },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 12, hash: hash_c },
 | //!         height: 11,
 | ||||||
|  | //!         hash: hash_b,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 12,
 | ||||||
|  | //!         hash: hash_c,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .apply_update(update)
 | //!     .apply_update(update)
 | ||||||
| @ -114,8 +151,14 @@ | |||||||
| //! // we detect another reorg, this time at height 12...
 | //! // we detect another reorg, this time at height 12...
 | ||||||
| //! let update = SparseChain::from_checkpoints(vec![
 | //! let update = SparseChain::from_checkpoints(vec![
 | ||||||
| //!     // we connect at checkpoint 11 as this is our "point of agreement"
 | //!     // we connect at checkpoint 11 as this is our "point of agreement"
 | ||||||
| //!     BlockId { height: 11, hash: hash_b },
 | //!     BlockId {
 | ||||||
| //!     BlockId { height: 12, hash: hash_d },
 | //!         height: 11,
 | ||||||
|  | //!         hash: hash_b,
 | ||||||
|  | //!     },
 | ||||||
|  | //!     BlockId {
 | ||||||
|  | //!         height: 12,
 | ||||||
|  | //!         hash: hash_d,
 | ||||||
|  | //!     },
 | ||||||
| //! ]);
 | //! ]);
 | ||||||
| //! let _ = chain
 | //! let _ = chain
 | ||||||
| //!     .apply_update(update)
 | //!     .apply_update(update)
 | ||||||
| @ -166,48 +209,102 @@ | |||||||
| //! }
 | //! }
 | ||||||
| //!
 | //!
 | ||||||
| //! impl Default for TxPosition {
 | //! impl Default for TxPosition {
 | ||||||
| //!     fn default() -> Self { Self::Unconfirmed }
 | //!     fn default() -> Self {
 | ||||||
|  | //!         Self::Unconfirmed
 | ||||||
|  | //!     }
 | ||||||
| //! }
 | //! }
 | ||||||
| //!
 | //!
 | ||||||
| //! impl ChainPosition for TxPosition {
 | //! impl ChainPosition for TxPosition {
 | ||||||
| //!     fn height(&self) -> TxHeight {
 | //!     fn height(&self) -> TxHeight {
 | ||||||
| //!         match self {
 | //!         match self {
 | ||||||
| //!             Self::Confirmed{ height, .. } => TxHeight::Confirmed(*height),
 | //!             Self::Confirmed { height, .. } => TxHeight::Confirmed(*height),
 | ||||||
| //!             Self::Unconfirmed => TxHeight::Unconfirmed,
 | //!             Self::Unconfirmed => TxHeight::Unconfirmed,
 | ||||||
| //!         }
 | //!         }
 | ||||||
| //!     }
 | //!     }
 | ||||||
| //!
 | //!
 | ||||||
| //!     fn max_ord_of_height(height: TxHeight) -> Self {
 | //!     fn max_ord_of_height(height: TxHeight) -> Self {
 | ||||||
| //!         match height {
 | //!         match height {
 | ||||||
| //!             TxHeight::Confirmed(height) => Self::Confirmed{ height, position: u32::MAX },
 | //!             TxHeight::Confirmed(height) => Self::Confirmed {
 | ||||||
|  | //!                 height,
 | ||||||
|  | //!                 position: u32::MAX,
 | ||||||
|  | //!             },
 | ||||||
| //!             TxHeight::Unconfirmed => Self::Unconfirmed,
 | //!             TxHeight::Unconfirmed => Self::Unconfirmed,
 | ||||||
| //!         }
 | //!         }
 | ||||||
| //!     }
 | //!     }
 | ||||||
| //!
 | //!
 | ||||||
| //!     fn min_ord_of_height(height: TxHeight) -> Self {
 | //!     fn min_ord_of_height(height: TxHeight) -> Self {
 | ||||||
| //!         match height {
 | //!         match height {
 | ||||||
| //!             TxHeight::Confirmed(height) => Self::Confirmed{ height, position: u32::MIN },
 | //!             TxHeight::Confirmed(height) => Self::Confirmed {
 | ||||||
|  | //!                 height,
 | ||||||
|  | //!                 position: u32::MIN,
 | ||||||
|  | //!             },
 | ||||||
| //!             TxHeight::Unconfirmed => Self::Unconfirmed,
 | //!             TxHeight::Unconfirmed => Self::Unconfirmed,
 | ||||||
| //!         }
 | //!         }
 | ||||||
| //!     }
 | //!     }
 | ||||||
| //! }
 | //! }
 | ||||||
| //!
 | //!
 | ||||||
| //! let mut chain = SparseChain::<TxPosition>::default();
 | //! let mut chain = SparseChain::<TxPosition>::default();
 | ||||||
| //! let _ = chain.insert_checkpoint(BlockId { height: 10, hash: hash_a }).unwrap();
 | //! let _ = chain
 | ||||||
| //! let _ = chain.insert_tx(txid_1, TxPosition::Confirmed{ height: 9, position: 4321 }).unwrap();
 | //!     .insert_checkpoint(BlockId {
 | ||||||
| //! let _ = chain.insert_tx(txid_2, TxPosition::Confirmed{ height: 9, position: 1234 }).unwrap();
 | //!         height: 10,
 | ||||||
| //! let _ = chain.insert_tx(txid_3, TxPosition::Confirmed{ height: 10, position: 321 }).unwrap();
 | //!         hash: hash_a,
 | ||||||
|  | //!     })
 | ||||||
|  | //!     .unwrap();
 | ||||||
|  | //! let _ = chain
 | ||||||
|  | //!     .insert_tx(
 | ||||||
|  | //!         txid_1,
 | ||||||
|  | //!         TxPosition::Confirmed {
 | ||||||
|  | //!             height: 9,
 | ||||||
|  | //!             position: 4321,
 | ||||||
|  | //!         },
 | ||||||
|  | //!     )
 | ||||||
|  | //!     .unwrap();
 | ||||||
|  | //! let _ = chain
 | ||||||
|  | //!     .insert_tx(
 | ||||||
|  | //!         txid_2,
 | ||||||
|  | //!         TxPosition::Confirmed {
 | ||||||
|  | //!             height: 9,
 | ||||||
|  | //!             position: 1234,
 | ||||||
|  | //!         },
 | ||||||
|  | //!     )
 | ||||||
|  | //!     .unwrap();
 | ||||||
|  | //! let _ = chain
 | ||||||
|  | //!     .insert_tx(
 | ||||||
|  | //!         txid_3,
 | ||||||
|  | //!         TxPosition::Confirmed {
 | ||||||
|  | //!             height: 10,
 | ||||||
|  | //!             position: 321,
 | ||||||
|  | //!         },
 | ||||||
|  | //!     )
 | ||||||
|  | //!     .unwrap();
 | ||||||
| //!
 | //!
 | ||||||
| //! // transactions are ordered correctly
 | //! // transactions are ordered correctly
 | ||||||
| //! assert_eq!(
 | //! assert_eq!(
 | ||||||
| //!     chain.txids().collect::<Vec<_>>(),
 | //!     chain.txids().collect::<Vec<_>>(),
 | ||||||
| //!     vec![
 | //!     vec![
 | ||||||
| //!         &(TxPosition::Confirmed{ height: 9, position: 1234 }, txid_2),
 | //!         &(
 | ||||||
| //!         &(TxPosition::Confirmed{ height: 9, position: 4321 }, txid_1),
 | //!             TxPosition::Confirmed {
 | ||||||
| //!         &(TxPosition::Confirmed{ height: 10, position: 321 }, txid_3),
 | //!                 height: 9,
 | ||||||
|  | //!                 position: 1234
 | ||||||
|  | //!             },
 | ||||||
|  | //!             txid_2
 | ||||||
|  | //!         ),
 | ||||||
|  | //!         &(
 | ||||||
|  | //!             TxPosition::Confirmed {
 | ||||||
|  | //!                 height: 9,
 | ||||||
|  | //!                 position: 4321
 | ||||||
|  | //!             },
 | ||||||
|  | //!             txid_1
 | ||||||
|  | //!         ),
 | ||||||
|  | //!         &(
 | ||||||
|  | //!             TxPosition::Confirmed {
 | ||||||
|  | //!                 height: 10,
 | ||||||
|  | //!                 position: 321
 | ||||||
|  | //!             },
 | ||||||
|  | //!             txid_3
 | ||||||
|  | //!         ),
 | ||||||
| //!     ],
 | //!     ],
 | ||||||
| //! );
 | //! );
 | ||||||
| //!
 |  | ||||||
| //! ```
 | //! ```
 | ||||||
| use core::{ | use core::{ | ||||||
|     fmt::Debug, |     fmt::Debug, | ||||||
| @ -853,7 +950,7 @@ impl<P: ChainPosition> SparseChain<P> { | |||||||
|             .iter() |             .iter() | ||||||
|             .filter(|(&txid, pos)| { |             .filter(|(&txid, pos)| { | ||||||
|                 pos.is_some() /*it was not a deletion*/ && |                 pos.is_some() /*it was not a deletion*/ && | ||||||
|                 self.tx_position(txid).is_none() /*we don't have the txid already*/ |                 self.tx_position(txid).is_none() /* we don't have the txid already */ | ||||||
|             }) |             }) | ||||||
|             .map(|(&txid, _)| txid) |             .map(|(&txid, _)| txid) | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -195,11 +195,11 @@ impl<I: Clone + Ord> SpkTxOutIndex<I> { | |||||||
|     /// # use bdk_chain::SpkTxOutIndex;
 |     /// # use bdk_chain::SpkTxOutIndex;
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// // imagine our spks are indexed like (keychain, derivation_index).
 |     /// // imagine our spks are indexed like (keychain, derivation_index).
 | ||||||
|     /// let txout_index = SpkTxOutIndex::<(u32,u32)>::default();
 |     /// let txout_index = SpkTxOutIndex::<(u32, u32)>::default();
 | ||||||
|     /// let all_unused_spks = txout_index.unused_spks(..);
 |     /// let all_unused_spks = txout_index.unused_spks(..);
 | ||||||
|     /// let change_index = 1;
 |     /// let change_index = 1;
 | ||||||
|     /// let unused_change_spks = txout_index
 |     /// let unused_change_spks =
 | ||||||
|     ///     .unused_spks((change_index, u32::MIN)..(change_index, u32::MAX));
 |     ///     txout_index.unused_spks((change_index, u32::MIN)..(change_index, u32::MAX));
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     pub fn unused_spks<R>(&self, range: R) -> impl DoubleEndedIterator<Item = (&I, &Script)> |     pub fn unused_spks<R>(&self, range: R) -> impl DoubleEndedIterator<Item = (&I, &Script)> | ||||||
|     where |     where | ||||||
|  | |||||||
| @ -52,7 +52,6 @@ | |||||||
| //! let additions = graph.apply_update(update);
 | //! let additions = graph.apply_update(update);
 | ||||||
| //! assert!(additions.is_empty());
 | //! assert!(additions.is_empty());
 | ||||||
| //! ```
 | //! ```
 | ||||||
| //!
 |  | ||||||
| use crate::{collections::*, AsTransaction, ForEachTxOut, IntoOwned}; | use crate::{collections::*, AsTransaction, ForEachTxOut, IntoOwned}; | ||||||
| use alloc::vec::Vec; | use alloc::vec::Vec; | ||||||
| use bitcoin::{OutPoint, Transaction, TxOut, Txid}; | use bitcoin::{OutPoint, Transaction, TxOut, Txid}; | ||||||
|  | |||||||
| @ -5,11 +5,11 @@ use bdk_chain::{ | |||||||
| }; | }; | ||||||
| use bdk_file_store::{FileError, IterError, KeychainStore, MAGIC_BYTES, MAGIC_BYTES_LEN}; | use bdk_file_store::{FileError, IterError, KeychainStore, MAGIC_BYTES, MAGIC_BYTES_LEN}; | ||||||
| use serde; | use serde; | ||||||
| use tempfile::NamedTempFile; |  | ||||||
| use std::{ | use std::{ | ||||||
|     io::{Read, Write}, |     io::{Read, Write}, | ||||||
|     vec::Vec, |     vec::Vec, | ||||||
| }; | }; | ||||||
|  | use tempfile::NamedTempFile; | ||||||
| #[derive(
 | #[derive(
 | ||||||
|     Debug, Clone, Copy, PartialOrd, Ord, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, |     Debug, Clone, Copy, PartialOrd, Ord, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, | ||||||
| )] | )] | ||||||
| @ -49,8 +49,7 @@ fn new_fails_if_magic_bytes_are_invalid() { | |||||||
|     let invalid_magic_bytes = "ldkfs0000000"; |     let invalid_magic_bytes = "ldkfs0000000"; | ||||||
| 
 | 
 | ||||||
|     let mut file = NamedTempFile::new().unwrap(); |     let mut file = NamedTempFile::new().unwrap(); | ||||||
|     file |     file.write_all(invalid_magic_bytes.as_bytes()) | ||||||
|         .write_all(invalid_magic_bytes.as_bytes()) |  | ||||||
|         .expect("should write"); |         .expect("should write"); | ||||||
| 
 | 
 | ||||||
|     match KeychainStore::<TestKeychain, TxHeight, Transaction>::new(file.reopen().unwrap()) { |     match KeychainStore::<TestKeychain, TxHeight, Transaction>::new(file.reopen().unwrap()) { | ||||||
| @ -83,8 +82,9 @@ fn append_changeset_truncates_invalid_bytes() { | |||||||
|     let mut file = NamedTempFile::new().unwrap(); |     let mut file = NamedTempFile::new().unwrap(); | ||||||
|     file.write_all(&data).expect("should write"); |     file.write_all(&data).expect("should write"); | ||||||
| 
 | 
 | ||||||
|     let mut store = KeychainStore::<TestKeychain, TxHeight, Transaction>::new(file.reopen().unwrap()) |     let mut store = | ||||||
|         .expect("should open"); |         KeychainStore::<TestKeychain, TxHeight, Transaction>::new(file.reopen().unwrap()) | ||||||
|  |             .expect("should open"); | ||||||
|     match store.iter_changesets().expect("seek should succeed").next() { |     match store.iter_changesets().expect("seek should succeed").next() { | ||||||
|         Some(Err(IterError::Bincode(_))) => {} |         Some(Err(IterError::Bincode(_))) => {} | ||||||
|         unexpected_res => panic!("unexpected result: {:?}", unexpected_res), |         unexpected_res => panic!("unexpected result: {:?}", unexpected_res), | ||||||
| @ -96,7 +96,10 @@ fn append_changeset_truncates_invalid_bytes() { | |||||||
| 
 | 
 | ||||||
|     let got_bytes = { |     let got_bytes = { | ||||||
|         let mut buf = Vec::new(); |         let mut buf = Vec::new(); | ||||||
|         file.reopen().unwrap().read_to_end(&mut buf).expect("should read"); |         file.reopen() | ||||||
|  |             .unwrap() | ||||||
|  |             .read_to_end(&mut buf) | ||||||
|  |             .expect("should read"); | ||||||
|         buf |         buf | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ pub struct PlanKey<Ak> { | |||||||
| impl<Ak> TemplateItem<Ak> { | impl<Ak> TemplateItem<Ak> { | ||||||
|     pub fn expected_size(&self) -> usize { |     pub fn expected_size(&self) -> usize { | ||||||
|         match self { |         match self { | ||||||
|             TemplateItem::Sign { .. } => 64, /*size of sig TODO: take into consideration sighash falg*/ |             TemplateItem::Sign { .. } => 64, /* size of sig TODO: take into consideration sighash falg */ | ||||||
|             TemplateItem::Pk { .. } => 32, |             TemplateItem::Pk { .. } => 32, | ||||||
|             TemplateItem::One => varint_len(1), |             TemplateItem::One => varint_len(1), | ||||||
|             TemplateItem::Zero => 0, /* zero means an empty witness element */ |             TemplateItem::Zero => 0, /* zero means an empty witness element */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user