summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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;