collab-common 0.0.7

Code shared by collab's client and server
Documentation
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

use serde::{Deserialize, Serialize};
use uuid::Uuid;

/// TODO: docs
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct PeerId(u64);

impl PeerId {
    /// TODO: docs
    #[inline(always)]
    pub fn as_u64(&self) -> u64 {
        self.0
    }

    /// TODO: docs
    #[inline]
    pub fn new(id: u64) -> Self {
        Self(id)
    }

    /// TODO: docs
    #[inline]
    pub fn new_random() -> Self {
        let uuid = Uuid::new_v4();
        let mut hasher = DefaultHasher::new();
        uuid.hash(&mut hasher);
        Self(hasher.finish())
    }
}