]> git.mikk.net Git - mtbl-rs/commitdiff
SeekableVec: relax Copy requirement to Clone
authorChris Mikkelson <cmikk@fsi.io>
Mon, 29 Apr 2024 01:48:59 +0000 (20:48 -0500)
committerChris Mikkelson <cmikk@fsi.io>
Fri, 3 May 2024 05:52:28 +0000 (00:52 -0500)
src/seekable/vec.rs

index 9acb9df1bc8396d7ccc6047cfb52e717c0a8c0c1..34409f8aa7afc190780d0949fa184db8042a44fc 100644 (file)
@@ -2,25 +2,25 @@ use crate::seekable::Iter;
 use crate::Seekable;
 
 #[derive(Debug)]
-pub struct SeekableVec<K: Ord + Copy, V: Ord + Copy> {
+pub struct SeekableVec<K: Ord + Clone, V: Ord + Clone> {
     off: usize,
     v: Vec<(K, V)>,
 }
-impl<K: Ord + Copy, V: Ord + Copy> IntoIterator for SeekableVec<K, V> {
+impl<K: Ord + Clone, V: Ord + Clone> IntoIterator for SeekableVec<K, V> {
     type Item = (K, V);
     type IntoIter = Iter<Self>;
     fn into_iter(self) -> Iter<Self> {
         Iter(self)
     }
 }
-impl<K: Ord + Copy, V: Ord + Copy> Seekable for SeekableVec<K, V> {
+impl<K: Ord + Clone, V: Ord + Clone> Seekable for SeekableVec<K, V> {
     type Key = K;
     type Value = V;
     fn next(&mut self) -> Option<(K, V)> {
         if self.off >= self.v.len() {
             return None;
         }
-        let v = self.v[self.off];
+        let v = self.v[self.off].clone();
         self.off += 1;
         Some(v)
     }
@@ -34,7 +34,7 @@ impl<K: Ord + Copy, V: Ord + Copy> Seekable for SeekableVec<K, V> {
         }
     }
 }
-impl<K: Ord + Copy, V: Ord + Copy> From<Vec<(K, V)>> for SeekableVec<K, V> {
+impl<K: Ord + Clone, V: Ord + Clone> From<Vec<(K, V)>> for SeekableVec<K, V> {
     fn from(vec: Vec<(K, V)>) -> SeekableVec<K, V> {
         let mut sv = SeekableVec { off: 0, v: vec };
         sv.v.sort();
@@ -42,7 +42,7 @@ impl<K: Ord + Copy, V: Ord + Copy> From<Vec<(K, V)>> for SeekableVec<K, V> {
     }
 }
 
-impl<K: Ord + Copy> From<Vec<K>> for SeekableVec<K, ()> {
+impl<K: Ord + Clone> From<Vec<K>> for SeekableVec<K, ()> {
     fn from(vec: Vec<K>) -> SeekableVec<K, ()> {
         let mut pv = vec.into_iter().map(|k| (k, ())).collect::<Vec<(K, ())>>();
         pv.sort();