kellnr_common/
normalized_name.rs

1use std::fmt;
2
3use crate::original_name::OriginalName;
4
5/// Index name is a lowercase version of the crate name
6
7#[derive(Debug, PartialEq, Eq, Clone)]
8pub struct NormalizedName(String);
9
10impl NormalizedName {
11    pub fn from_unchecked(name: String) -> Self {
12        NormalizedName(name)
13    }
14
15    pub fn from_unchecked_str(name: &str) -> Self {
16        NormalizedName(name.to_owned())
17    }
18}
19
20impl From<OriginalName> for NormalizedName {
21    fn from(name: OriginalName) -> Self {
22        NormalizedName(name.to_lowercase())
23    }
24}
25
26impl From<&OriginalName> for NormalizedName {
27    fn from(name: &OriginalName) -> Self {
28        NormalizedName(name.to_lowercase())
29    }
30}
31
32impl fmt::Display for NormalizedName {
33    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34        write!(f, "{}", self.0)
35    }
36}
37
38impl std::ops::Deref for NormalizedName {
39    type Target = String;
40
41    fn deref(&self) -> &Self::Target {
42        &self.0
43    }
44}