summary refs log tree commit diff stats
path: root/pkgs/by-name/ba/back/src/git_bug
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--pkgs/by-name/ba/back/src/git_bug/format/mod.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/pkgs/by-name/ba/back/src/git_bug/format/mod.rs b/pkgs/by-name/ba/back/src/git_bug/format/mod.rs
index 4ebf6d4..b3b6bcc 100644
--- a/pkgs/by-name/ba/back/src/git_bug/format/mod.rs
+++ b/pkgs/by-name/ba/back/src/git_bug/format/mod.rs
@@ -61,6 +61,27 @@ impl Display for TimeStamp {
     }
 }
 
+/// An UNIX time stamp.
+///
+/// These should only ever be used for human-display, because timestamps are unreliably in a
+/// distributed system.
+///
+/// This one allows underlying access to it's value and is only obtainable via `unsafe` code.
+/// The reason behind this is, that you might need to access this to improve the display for humans
+/// (i.e., sorting by date).
+#[derive(Debug, Default, Clone, Copy, Ord, PartialOrd, Eq, PartialEq)]
+pub struct UnsafeTimeStamp {
+    value: u64,
+}
+impl TimeStamp {
+    /// # Safety
+    /// This is not really unsafe, but there is just no way your can trust a time stamp in a
+    /// distributed system. As such access to the raw value could lead to bugs.
+    pub unsafe fn to_unsafe(self) -> UnsafeTimeStamp {
+        UnsafeTimeStamp { value: self.value }
+    }
+}
+
 #[derive(Debug, Default, Deserialize, Clone, PartialEq, Eq)]
 /// A string that should be escaped when injected into html content.
 pub struct HtmlString {