summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-09-17 09:28:41 +0300
committerLars Wirzenius <liw@liw.fi>2020-09-17 09:28:41 +0300
commit0bc14ecaafabc6be57392e9092f07472c440ae46 (patch)
treeecff8cb09ae2db6bce772a1ab8664291e535f036 /src
parent7155b46602f741694debb4e1764bfa74f3d5c25b (diff)
downloadobnam2-0bc14ecaafabc6be57392e9092f07472c440ae46.tar.gz
feat: add initial Chunk struct
Diffstat (limited to 'src')
-rw-r--r--src/chunk.rs29
-rw-r--r--src/lib.rs1
2 files changed, 30 insertions, 0 deletions
diff --git a/src/chunk.rs b/src/chunk.rs
new file mode 100644
index 0000000..29d64a2
--- /dev/null
+++ b/src/chunk.rs
@@ -0,0 +1,29 @@
+use crate::chunkmeta::ChunkMeta;
+
+/// Store an arbitrary chunk of data.
+///
+/// The data is just arbitrary binary data.
+///
+/// A chunk also contains its associated metadata, except its
+/// identifier.
+pub struct Chunk {
+ meta: ChunkMeta,
+ data: Vec<u8>,
+}
+
+impl Chunk {
+ /// Construct a new chunk.
+ pub fn new(meta: ChunkMeta, data: Vec<u8>) -> Self {
+ Chunk { meta, data }
+ }
+
+ /// Return a chunk's metadata.
+ pub fn meta(&self) -> &ChunkMeta {
+ &self.meta
+ }
+
+ /// Return a chunk's data.
+ pub fn data(&self) -> &[u8] {
+ &self.data
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index a0a24d4..3c99f83 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,2 +1,3 @@
+pub mod chunk;
pub mod chunkid;
pub mod chunkmeta;