cargo_uv/packages/
package_name.rs1use std::{borrow::Borrow, fmt::Display, ops::DerefMut};
2
3#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, PartialOrd, Ord)]
7pub struct PackageName(pub String);
8
9impl Display for PackageName {
10 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11 write!(f, "{}", self.0)
12 }
13}
14impl<T> From<T> for PackageName
15where
16 T: Into<String>,
17{
18 fn from(value: T) -> Self {
19 Self(value.into())
20 }
21}
22
23impl std::ops::Deref for PackageName {
24 type Target = String;
25
26 fn deref(&self) -> &Self::Target {
27 &self.0
28 }
29}
30
31impl DerefMut for PackageName {
32 fn deref_mut(&mut self) -> &mut Self::Target {
33 &mut self.0
34 }
35}
36impl Borrow<std::string::String> for PackageName {
37 fn borrow(&self) -> &std::string::String {
38 &self.0
39 }
40}
41impl Borrow<std::string::String> for &PackageName {
42 fn borrow(&self) -> &std::string::String {
43 &self.0
44 }
45}
46impl AsRef<str> for PackageName {
47 fn as_ref(&self) -> &str {
48 &self.0
49 }
50}
51
52impl AsMut<str> for PackageName {
53 fn as_mut(&mut self) -> &mut str {
54 &mut self.0
55 }
56}
57
58impl PartialEq<String> for PackageName {
59 fn eq(&self, other: &String) -> bool {
60 &self.0 == other
61 }
62}
63
64impl PartialEq<PackageName> for String {
65 fn eq(&self, other: &PackageName) -> bool {
66 other.eq(self)
67 }
68}