yggdrasil-shared 0.2.5

Yggdrasil Compiler core shared components
use super::*;

pub struct FileFingerprint {
    pub fingerprint: u128,
    pub text: String,
}

impl FileFingerprint {
    pub fn new(url: &Url) -> Result<Self> {
        let input = fs::read_to_string(url.to_file_path()?)?;
        let mut bytes = input.clone().into_bytes();
        bytes.extend_from_slice(url.as_str().as_bytes());
        Ok(Self { fingerprint: xxh3_128(&bytes), text: input })
    }
}

impl PartialEq<FileFingerprint> for FileStore {
    fn eq(&self, other: &FileFingerprint) -> bool {
        self.fingerprint == other.fingerprint
    }
}