Skip to main content

wslplugins_rs/user_distribution_id/fmt/
uuid_formatter.rs

1use crate::user_distribution_id::ParseError;
2use crate::user_distribution_id::{fmt::formatter::Formatter, UserDistributionID};
3use std::{
4    fmt::{LowerHex, Result, UpperHex},
5    str::FromStr,
6};
7use uuid::Uuid;
8pub struct UuidFormatter(Uuid);
9
10impl Formatter for UuidFormatter {}
11
12impl LowerHex for UuidFormatter {
13    #[inline]
14    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result {
15        LowerHex::fmt(&self.0.as_hyphenated(), f)
16    }
17}
18
19impl UpperHex for UuidFormatter {
20    #[inline]
21    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result {
22        UpperHex::fmt(&self.0.as_hyphenated(), f)
23    }
24}
25
26impl From<UserDistributionID> for UuidFormatter {
27    #[inline]
28    fn from(value: UserDistributionID) -> Self {
29        Self(Uuid::from(value))
30    }
31}
32
33impl From<UuidFormatter> for UserDistributionID {
34    #[inline]
35    fn from(value: UuidFormatter) -> Self {
36        value.0.into()
37    }
38}
39
40impl FromStr for UuidFormatter {
41    type Err = ParseError;
42    #[inline]
43    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
44        Ok(Uuid::parse_str(s).map(Self)?)
45    }
46}