wslplugins_rs/user_distribution_id/fmt/
uuid_formatter.rs1use 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}