Merge pull request #1274 from evanlinjin/avoid_btreemap_append
Avoid using `BTreeMap::append`
This commit is contained in:
		
						commit
						b6422f7ffc
					
				| @ -58,8 +58,9 @@ impl<K: Ord> Append for ChangeSet<K> { | |||||||
|                 *index = other_index.max(*index); |                 *index = other_index.max(*index); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
| 
 |         // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
 | ||||||
|         self.0.append(&mut other.0); |         // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
 | ||||||
|  |         self.0.extend(other.0); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Returns whether the changeset are empty.
 |     /// Returns whether the changeset are empty.
 | ||||||
|  | |||||||
| @ -123,8 +123,10 @@ pub trait Append { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl<K: Ord, V> Append for BTreeMap<K, V> { | impl<K: Ord, V> Append for BTreeMap<K, V> { | ||||||
|     fn append(&mut self, mut other: Self) { |     fn append(&mut self, other: Self) { | ||||||
|         BTreeMap::append(self, &mut other) |         // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
 | ||||||
|  |         // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
 | ||||||
|  |         BTreeMap::extend(self, other) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn is_empty(&self) -> bool { |     fn is_empty(&self) -> bool { | ||||||
| @ -133,8 +135,10 @@ impl<K: Ord, V> Append for BTreeMap<K, V> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl<T: Ord> Append for BTreeSet<T> { | impl<T: Ord> Append for BTreeSet<T> { | ||||||
|     fn append(&mut self, mut other: Self) { |     fn append(&mut self, other: Self) { | ||||||
|         BTreeSet::append(self, &mut other) |         // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
 | ||||||
|  |         // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
 | ||||||
|  |         BTreeSet::extend(self, other) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn is_empty(&self) -> bool { |     fn is_empty(&self) -> bool { | ||||||
|  | |||||||
| @ -1271,10 +1271,12 @@ impl<A> ChangeSet<A> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl<A: Ord> Append for ChangeSet<A> { | impl<A: Ord> Append for ChangeSet<A> { | ||||||
|     fn append(&mut self, mut other: Self) { |     fn append(&mut self, other: Self) { | ||||||
|         self.txs.append(&mut other.txs); |         // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
 | ||||||
|         self.txouts.append(&mut other.txouts); |         // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
 | ||||||
|         self.anchors.append(&mut other.anchors); |         self.txs.extend(other.txs); | ||||||
|  |         self.txouts.extend(other.txouts); | ||||||
|  |         self.anchors.extend(other.anchors); | ||||||
| 
 | 
 | ||||||
|         // last_seen timestamps should only increase
 |         // last_seen timestamps should only increase
 | ||||||
|         self.last_seen.extend( |         self.last_seen.extend( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user