about summary refs log tree commit diff stats
path: root/crates/bytes/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/bytes/src/error.rs')
-rw-r--r--crates/bytes/src/error.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/crates/bytes/src/error.rs b/crates/bytes/src/error.rs
new file mode 100644
index 0000000..7643109
--- /dev/null
+++ b/crates/bytes/src/error.rs
@@ -0,0 +1,38 @@
+// 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 std::{fmt::Display, num::ParseIntError};
+
+#[derive(Debug)]
+pub enum BytesError {
+    BytesParseIntError(ParseIntError),
+    NotYetSupported(String),
+}
+
+impl Display for BytesError {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        match self {
+            BytesError::BytesParseIntError(e) => {
+                f.write_fmt(format_args!("Failed to parse a number as integer: '{}'", e))
+            },
+            BytesError::NotYetSupported(other) => {
+                f.write_fmt(format_args!("Your extension '{}' is not yet supported. Only KB,MB,GB or KiB,MiB,GiB are supported", other))
+            }
+        }
+    }
+}
+
+impl From<ParseIntError> for BytesError {
+    fn from(value: ParseIntError) -> Self {
+        Self::BytesParseIntError(value)
+    }
+}
+
+impl std::error::Error for BytesError {}