diff options
| author | zirkonya <zirkonya@iridium.lan> | 2026-07-25 19:45:02 +0200 |
|---|---|---|
| committer | zirkonya <zirkonya@iridium.lan> | 2026-07-25 19:45:02 +0200 |
| commit | 08c8e9d37f3e0f9a82c3792c1927967631de73cd (patch) | |
| tree | 6d97d62b7253280472e5f5818f7d45df4f5038ba /src | |
| parent | 467a22d3c955bec752f9d98cf0829e05a150721a (diff) | |
Add README LICENSE and setup encode & decode trait
Diffstat (limited to 'src')
| -rw-r--r-- | src/codec.rs | 7 | ||||
| -rw-r--r-- | src/codec/decode.rs | 7 | ||||
| -rw-r--r-- | src/codec/encode.rs | 6 | ||||
| -rw-r--r-- | src/lib.rs | 16 | ||||
| -rw-r--r-- | src/types/mod.rs | 1 | ||||
| -rw-r--r-- | src/types/prefix.rs | 8 |
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>; +} @@ -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>, +} |
