chunked_wal/chunk/
chunk_id.rs1use std::fmt;
2use std::ops::Deref;
3
4use crate::num::format_pad_u64;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
13pub struct ChunkId(pub u64);
14
15impl fmt::Display for ChunkId {
16 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17 write!(f, "ChunkId({})", format_pad_u64(self.0))
18 }
19}
20
21impl From<u64> for ChunkId {
22 fn from(offset: u64) -> Self {
23 ChunkId(offset)
24 }
25}
26
27impl Deref for ChunkId {
28 type Target = u64;
29
30 fn deref(&self) -> &Self::Target {
31 &self.0
32 }
33}
34
35impl ChunkId {
36 pub fn offset(&self) -> u64 {
41 self.0
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use crate::ChunkId;
48
49 #[test]
50 fn test_chunk_id_format_and_accessors() {
51 let chunk_id = ChunkId::from(1_200_000);
52
53 assert_eq!(1_200_000, *chunk_id);
54 assert_eq!(1_200_000, chunk_id.offset());
55 assert_eq!("ChunkId(00_000_000_000_001_200_000)", chunk_id.to_string());
56 }
57}