typescript_tools/types/
package_name.rs

1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4
5/// A fully-scoped npm package name.
6#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
7pub struct PackageName(String);
8
9impl PackageName {
10    pub fn as_str(&self) -> &str {
11        &self.0
12    }
13}
14
15impl Display for PackageName {
16    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
17        write!(f, "{}", self.0)
18    }
19}
20
21impl From<&str> for PackageName {
22    fn from(value: &str) -> Self {
23        Self(value.to_owned())
24    }
25}
26
27impl From<&String> for PackageName {
28    fn from(value: &String) -> Self {
29        Self(value.to_owned())
30    }
31}
32
33impl From<String> for PackageName {
34    fn from(value: String) -> Self {
35        Self(value)
36    }
37}