aboutsummaryrefslogtreecommitdiffstats
path: root/crates/bytes/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--crates/bytes/src/serde.rs19
-rw-r--r--crates/yt/src/shared/bytes/error.rs (renamed from crates/bytes/src/error.rs)0
-rw-r--r--crates/yt/src/shared/bytes/mod.rs (renamed from crates/bytes/src/lib.rs)24
3 files changed, 20 insertions, 23 deletions
diff --git a/crates/bytes/src/serde.rs b/crates/bytes/src/serde.rs
deleted file mode 100644
index 4341e32..0000000
--- a/crates/bytes/src/serde.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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())
- }
-}
diff --git a/crates/bytes/src/error.rs b/crates/yt/src/shared/bytes/error.rs
index c9783d8..c9783d8 100644
--- a/crates/bytes/src/error.rs
+++ b/crates/yt/src/shared/bytes/error.rs
diff --git a/crates/bytes/src/lib.rs b/crates/yt/src/shared/bytes/mod.rs
index 2a9248d..31e782e 100644
--- a/crates/bytes/src/lib.rs
+++ b/crates/yt/src/shared/bytes/mod.rs
@@ -16,6 +16,7 @@
)]
use std::{fmt::Display, str::FromStr};
+use ::serde::{Deserialize, Serialize};
use error::BytesError;
const B: u64 = 1;
@@ -31,10 +32,11 @@ const MB: u64 = 1000 * KB;
const GB: u64 = 1000 * MB;
const TB: u64 = 1000 * GB;
-pub mod error;
-pub mod serde;
+pub(crate) mod error;
-#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Ord, Eq)]
+#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize, Serialize)]
+#[serde(try_from = "String")]
+#[serde(into = "String")]
pub struct Bytes(u64);
impl Bytes {
@@ -131,6 +133,20 @@ impl Display for Bytes {
}
}
+impl From<Bytes> for String {
+ fn from(value: Bytes) -> Self {
+ value.to_string()
+ }
+}
+
+impl TryFrom<String> for Bytes {
+ type Error = BytesError;
+
+ fn try_from(value: String) -> Result<Self, Self::Error> {
+ value.as_str().parse()
+ }
+}
+
// taken from this stack overflow question: https://stackoverflow.com/a/76572321
/// Round to significant digits (rather than digits after the decimal).
///
@@ -149,7 +165,7 @@ impl Display for Bytes {
///# }
/// ```
#[must_use]
-pub fn precision_f64(x: f64, decimals: u32) -> f64 {
+pub(crate) fn precision_f64(x: f64, decimals: u32) -> f64 {
if x == 0. || decimals == 0 {
0.
} else {