diff --git a/ubisync-lib/src/types/family.rs b/ubisync-lib/src/types/family.rs index 19afa44..056a158 100644 --- a/ubisync-lib/src/types/family.rs +++ b/ubisync-lib/src/types/family.rs @@ -1,5 +1,3 @@ -use std::collections::HashSet; - use serde::{Deserialize, Serialize}; use super::{FamilyId, PeerId}; @@ -8,7 +6,7 @@ use super::{FamilyId, PeerId}; pub struct Family { pub id: FamilyId, pub name: Option, - pub members: HashSet, + pub members: Vec, } impl Family { @@ -16,7 +14,7 @@ impl Family { Family { id, name, - members: HashSet::from_iter(members.into_iter()), + members, } } -} \ No newline at end of file +} diff --git a/ubisync-lib/src/types/peer_id.rs b/ubisync-lib/src/types/peer_id.rs index 8c4bf51..bff3923 100644 --- a/ubisync-lib/src/types/peer_id.rs +++ b/ubisync-lib/src/types/peer_id.rs @@ -52,7 +52,7 @@ impl From for I2pSocketAddr { impl From for PeerId { fn from(value: I2pSocketAddr) -> Self { - Self::try_from_b32(&value.dest().string(), Some(value.port())).unwrap_or_else(|_| + Self::try_from_b32(&value.dest().string(), Some(value.port())).unwrap_or( Self::try_from_dest(&value.dest().string(), Some(value.port())).expect(&format!( "I2pSocketAddr was neither in b32 nor in b64 format: {value:?}" )), diff --git a/ubisync/src/state/database/collections/peer_families.rs b/ubisync/src/state/database/collections/peer_families.rs index e44759d..f204819 100644 --- a/ubisync/src/state/database/collections/peer_families.rs +++ b/ubisync/src/state/database/collections/peer_families.rs @@ -80,7 +80,7 @@ impl From for Family { Family { id: (*value.id).clone(), name: value.name, - members: HashSet::from_iter(value.members.into_iter()), + members: value.members.iter().map(|p| p.clone()).collect_vec(), } } } @@ -160,7 +160,7 @@ impl StateDB { .value .clone() .map(|family| family.members) - .map(|map| map.into_iter().collect_vec()).unwrap_or(vec![])), + .unwrap_or(vec![])), _ => Err(Error::msg("Peer appears to be member of multiple families")), })? .map_err(|e| anyhow!(e)) @@ -187,8 +187,6 @@ impl StateDB { #[cfg(test)] mod tests { - use std::collections::HashSet; - use ubisync_lib::types::{Family, FamilyId, PeerId}; use crate::state::database::StateDB; @@ -202,7 +200,7 @@ mod tests { db.add_peer_family(Family { id: family_id.clone(), name: Some("My family name".to_string()), - members: HashSet::from([peer_id.clone()]), + members: vec![peer_id.clone()], }) .unwrap(); let retrieved_family = db.get_peer_family(family_id.clone()).unwrap(); @@ -226,7 +224,7 @@ mod tests { db.add_peer_family(Family { id: family_id.clone(), name: Some("My family name".to_string()), - members: HashSet::from([peer_id.clone()]), + members: vec![peer_id.clone()], }) .unwrap(); db.remove_peer_from_family(peer_id.clone()).unwrap(); @@ -251,7 +249,7 @@ mod tests { db.add_peer_family(Family { id: family_id.clone(), name: Some("My family name".to_string()), - members: HashSet::from([peer_id.clone()]), + members: vec![peer_id.clone()], }) .unwrap(); @@ -286,7 +284,7 @@ mod tests { db.add_peer_family(Family { id: family_id.clone(), name: Some("My family name".to_string()), - members: HashSet::from([peer_id.clone()]), + members: vec![peer_id.clone()], }) .unwrap(); diff --git a/ubisync/src/state/mod.rs b/ubisync/src/state/mod.rs index 4d18276..c2bdaec 100644 --- a/ubisync/src/state/mod.rs +++ b/ubisync/src/state/mod.rs @@ -1,6 +1,6 @@ use crate::{api::v0::app::App, comm::CommHandle, node_events::UbisyncNodeEvent, Ubisync}; use std::{ - collections::{HashMap, HashSet}, + collections::HashMap, sync::{ mpsc::{channel, Receiver, Sender}, Arc, Mutex, RwLock, @@ -167,7 +167,7 @@ impl State { let family = Family { id: FamilyId::new(), name: None, - members: HashSet::from([my_id.clone(), peer.clone()]), + members: vec![my_id.clone(), peer.clone()], }; self.db.add_peer_family(family.clone())?; family