wslplugins-rs 0.1.0-beta.2

A Rust framework for developing WSL plugins using safe and idiomatic Rust.
Documentation
use crate::user_distribution_id::ParseError;
use crate::user_distribution_id::{fmt::formatter::Formatter, UserDistributionID};
use std::{
    fmt::{LowerHex, Result, UpperHex},
    str::FromStr,
};
use uuid::Uuid;
pub struct UuidFormatter(Uuid);

impl Formatter for UuidFormatter {}

impl LowerHex for UuidFormatter {
    #[inline]
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result {
        LowerHex::fmt(&self.0.as_hyphenated(), f)
    }
}

impl UpperHex for UuidFormatter {
    #[inline]
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result {
        UpperHex::fmt(&self.0.as_hyphenated(), f)
    }
}

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

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

impl FromStr for UuidFormatter {
    type Err = ParseError;
    #[inline]
    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(Uuid::parse_str(s).map(Self)?)
    }
}