about summary refs log tree commit diff
path: root/tvix/castore/src/path.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/castore/src/path.rs')
-rw-r--r--tvix/castore/src/path.rs36
1 files changed, 33 insertions, 3 deletions
diff --git a/tvix/castore/src/path.rs b/tvix/castore/src/path.rs
index 8cca5b62f8..3577ea80a4 100644
--- a/tvix/castore/src/path.rs
+++ b/tvix/castore/src/path.rs
@@ -1,13 +1,19 @@
 //! Contains data structures to deal with Paths in the tvix-castore model.
 
-use std::{borrow::Borrow, mem, ops::Deref, str::FromStr};
+use std::{
+    borrow::Borrow,
+    fmt::{self, Debug, Display},
+    mem,
+    ops::Deref,
+    str::FromStr,
+};
 
 use bstr::ByteSlice;
 
 /// Represents a Path in the castore model.
 /// These are always relative, and platform-independent, which distinguishes
 /// them from the ones provided in the standard library.
-#[derive(Debug, Eq, Hash, PartialEq)]
+#[derive(Eq, Hash, PartialEq)]
 #[repr(transparent)] // SAFETY: Representation has to match [u8]
 pub struct Path {
     // As node names in the castore model cannot contain slashes,
@@ -86,10 +92,22 @@ impl Path {
     }
 }
 
+impl Debug for Path {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        Debug::fmt(self.inner.as_bstr(), f)
+    }
+}
+
+impl Display for Path {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        Display::fmt(self.inner.as_bstr(), f)
+    }
+}
+
 /// Represents a owned PathBuf in the castore model.
 /// These are always relative, and platform-independent, which distinguishes
 /// them from the ones provided in the standard library.
-#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
+#[derive(Clone, Default, Eq, Hash, PartialEq)]
 pub struct PathBuf {
     inner: Vec<u8>,
 }
@@ -135,6 +153,18 @@ impl FromStr for PathBuf {
     }
 }
 
+impl Debug for PathBuf {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        Debug::fmt(&**self, f)
+    }
+}
+
+impl Display for PathBuf {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        Display::fmt(&**self, f)
+    }
+}
+
 #[cfg(test)]
 mod test {
     use super::PathBuf;