use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct PeerId(u64);
impl PeerId {
#[inline(always)]
pub fn as_u64(&self) -> u64 {
self.0
}
#[inline]
pub fn new(id: u64) -> Self {
Self(id)
}
#[inline]
pub fn new_random() -> Self {
let uuid = Uuid::new_v4();
let mut hasher = DefaultHasher::new();
uuid.hash(&mut hasher);
Self(hasher.finish())
}
}