summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzirkonya <zirkonya@iridium.lan>2026-07-25 19:45:02 +0200
committerzirkonya <zirkonya@iridium.lan>2026-07-25 19:45:02 +0200
commit08c8e9d37f3e0f9a82c3792c1927967631de73cd (patch)
tree6d97d62b7253280472e5f5818f7d45df4f5038ba /src
parent467a22d3c955bec752f9d98cf0829e05a150721a (diff)
Add README LICENSE and setup encode & decode trait
Diffstat (limited to 'src')
-rw-r--r--src/codec.rs7
-rw-r--r--src/codec/decode.rs7
-rw-r--r--src/codec/encode.rs6
-rw-r--r--src/lib.rs16
-rw-r--r--src/types/mod.rs1
-rw-r--r--src/types/prefix.rs8
6 files changed, 31 insertions, 14 deletions
diff --git a/src/codec.rs b/src/codec.rs
new file mode 100644
index 0000000..f11a88e
--- /dev/null
+++ b/src/codec.rs
@@ -0,0 +1,7 @@
+use crate::codec::{decode::Decode, encode::Encode};
+
+pub mod decode;
+pub mod encode;
+
+pub trait Codec: Encode + Decode {}
+impl<T> Codec for T where T: Encode + Decode {}
diff --git a/src/codec/decode.rs b/src/codec/decode.rs
new file mode 100644
index 0000000..65f08b5
--- /dev/null
+++ b/src/codec/decode.rs
@@ -0,0 +1,7 @@
+use std::io::{self, Read};
+
+pub trait Decode {
+ fn decode(reader: &impl Read) -> io::Result<Self>
+ where
+ Self: Sized;
+}
diff --git a/src/codec/encode.rs b/src/codec/encode.rs
new file mode 100644
index 0000000..f23913b
--- /dev/null
+++ b/src/codec/encode.rs
@@ -0,0 +1,6 @@
+use std::io::{self, Write};
+
+pub trait Encode {
+ fn encode(&self, write: &mut dyn Write) -> io::Result<usize>;
+ fn encoded_size(&self) -> Option<usize>;
+}
diff --git a/src/lib.rs b/src/lib.rs
index b93cf3f..8ffd97a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,14 +1,2 @@
-pub fn add(left: u64, right: u64) -> u64 {
- left + right
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn it_works() {
- let result = add(2, 2);
- assert_eq!(result, 4);
- }
-}
+pub mod codec;
+pub mod types;
diff --git a/src/types/mod.rs b/src/types/mod.rs
new file mode 100644
index 0000000..5a68507
--- /dev/null
+++ b/src/types/mod.rs
@@ -0,0 +1 @@
+pub mod prefix;
diff --git a/src/types/prefix.rs b/src/types/prefix.rs
new file mode 100644
index 0000000..e60c23b
--- /dev/null
+++ b/src/types/prefix.rs
@@ -0,0 +1,8 @@
+use std::marker::PhantomData;
+
+use crate::codec::Codec;
+
+pub struct LenPrefixed<L: Codec, D: Codec> {
+ data: D,
+ _len: PhantomData<L>,
+}