From 08c8e9d37f3e0f9a82c3792c1927967631de73cd Mon Sep 17 00:00:00 2001 From: zirkonya Date: Sat, 25 Jul 2026 19:45:02 +0200 Subject: Add README LICENSE and setup encode & decode trait --- src/codec.rs | 7 +++++++ src/codec/decode.rs | 7 +++++++ src/codec/encode.rs | 6 ++++++ src/lib.rs | 16 ++-------------- src/types/mod.rs | 1 + src/types/prefix.rs | 8 ++++++++ 6 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 src/codec.rs create mode 100644 src/codec/decode.rs create mode 100644 src/codec/encode.rs create mode 100644 src/types/mod.rs create mode 100644 src/types/prefix.rs (limited to 'src') 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 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 + 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; + fn encoded_size(&self) -> Option; +} 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 { + data: D, + _len: PhantomData, +} -- cgit v1.2.3