wslplugins-rs 0.1.0-beta.2

A Rust framework for developing WSL plugins using safe and idiomatic Rust.
Documentation
use super::UserDistributionID;
use uuid::Uuid;

impl From<UserDistributionID> for Uuid {
    #[inline]
    fn from(value: UserDistributionID) -> Self {
        Self::from_u128(value.0.to_u128())
    }
}

impl From<Uuid> for UserDistributionID {
    #[inline]
    fn from(value: Uuid) -> Self {
        Self(windows_core::GUID::from_u128(value.as_u128()))
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use proptest::prelude::*;
    use uuid::{fmt::Hyphenated, Uuid};
    proptest! {
        #[test]
        fn test_uuid_user_distribution_id_conversion(int_value in any::<u128>()) {
            let guid = windows_core::GUID::from_u128(int_value);
            let user_dist_id: UserDistributionID = guid.into();
            let converted_uuid: Uuid = user_dist_id.into();
            prop_assert_eq!(format!("{:}", user_dist_id), format!("{:X}", Hyphenated::from(converted_uuid)));
            prop_assert_eq!(format!("{:X}", user_dist_id), format!("{:X}", Hyphenated::from(converted_uuid)));
            prop_assert_eq!(format!("{:x}", user_dist_id), format!("{:x}", Hyphenated::from(converted_uuid)));
        }
    }
}