about summary refs log tree commit diff stats
path: root/crates/bytes/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/bytes/src')
-rw-r--r--crates/bytes/src/lib.rs2
-rw-r--r--crates/bytes/src/serde.rs19
2 files changed, 21 insertions, 0 deletions
diff --git a/crates/bytes/src/lib.rs b/crates/bytes/src/lib.rs
index f80b864..9814a4a 100644
--- a/crates/bytes/src/lib.rs
+++ b/crates/bytes/src/lib.rs
@@ -26,6 +26,8 @@ const GB: u64 = 1000 * MB;
 const TB: u64 = 1000 * GB;
 
 pub mod error;
+#[cfg(feature = "serde")]
+pub mod serde;
 
 #[derive(Clone, Copy)]
 pub struct Bytes(u64);
diff --git a/crates/bytes/src/serde.rs b/crates/bytes/src/serde.rs
new file mode 100644
index 0000000..4341e32
--- /dev/null
+++ b/crates/bytes/src/serde.rs
@@ -0,0 +1,19 @@
+// yt - A fully featured command line YouTube client
+//
+// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+// This file is part of Yt.
+//
+// You should have received a copy of the License along with this program.
+// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+use serde::{Serialize, Serializer};
+
+use crate::Bytes;
+
+impl Serialize for Bytes {
+    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
+        serializer.serialize_str(self.to_string().as_str())
+    }
+}