diff --git a/src/bag.rs b/src/bag.rs index 71de1cd..23c8d62 100644 --- a/src/bag.rs +++ b/src/bag.rs @@ -13,11 +13,17 @@ pub enum Net { } // Allows negative counts - a "delta" -pub struct BTreeBag where V: std::cmp::Ord { +pub struct BTreeBag { counts: BTreeMap, } -impl BTreeBag where V: std::cmp::Ord { +impl std::default::Default for BTreeBag { + fn default() -> Self { + Self::new() + } +} + +impl BTreeBag { pub fn new() -> BTreeBag { BTreeBag { counts: BTreeMap::new() } } @@ -59,7 +65,7 @@ impl BTreeBag where V: std::cmp::Ord { } } -impl<'a, V> IntoIterator for &'a BTreeBag where V: std::cmp::Ord { +impl<'a, V: std::cmp::Ord> IntoIterator for &'a BTreeBag { type Item = (&'a V, &'a Count); type IntoIter = Iter<'a, V, Count>; @@ -68,7 +74,7 @@ impl<'a, V> IntoIterator for &'a BTreeBag where V: std::cmp::Ord { } } -impl FromIterator for BTreeBag where V: std::cmp::Ord { +impl FromIterator for BTreeBag { fn from_iter>(iter: I) -> Self { let mut bag = Self::new(); for k in iter { @@ -78,7 +84,7 @@ impl FromIterator for BTreeBag where V: std::cmp::Ord { } } -impl std::ops::Index<&V> for BTreeBag where V: std::cmp::Ord { +impl std::ops::Index<&V> for BTreeBag { type Output = Count; fn index(&self, i: &V) -> &Count { self.counts.get(i).unwrap_or(&0) diff --git a/src/main.rs b/src/main.rs index 804330c..d519092 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,7 +26,7 @@ async fn main() -> Result<(), Box> { let (stream, addr) = listener.accept().await?; let connid = id; let spaces = Arc::clone(&spaces); - id = id + 1; + id += 1; tokio::spawn(async move { match peer::Peer::new(connid, stream).await.run(spaces).await { Ok(_) => (), diff --git a/src/packets.rs b/src/packets.rs index 09967ed..48e73e5 100644 --- a/src/packets.rs +++ b/src/packets.rs @@ -63,7 +63,7 @@ pub enum EncodeError { impl From for EncodeError { fn from(v: io::Error) -> Self { - EncodeError::Write(v.into()) + EncodeError::Write(v) } }