// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR MPL-2.0 // SPDX-FileCopyrightText: 2024 Gabriel Marcano use std::fmt; use std::io; use std::num::ParseIntError; use std::num::TryFromIntError; use std::str::Utf8Error; #[derive(Debug)] pub enum Error { Io(io::Error), Utf8(Utf8Error), Parse(String), } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { Self::Io(e) => e.fmt(f), Self::Utf8(e) => e.fmt(f), Self::Parse(e) => write!(f, "Invalid value encountered while parsing Wii ISO: {e}"), } } } impl From for Error { fn from(err: io::Error) -> Self { Self::Io(err) } } impl From for Error { fn from(err: Utf8Error) -> Self { Self::Utf8(err) } } impl From for Error { fn from(_: ParseIntError) -> Self { Self::Parse("failed to parse number".into()) } } impl From for Error { fn from(_: TryFromIntError) -> Self { Self::Parse("failed to convert number".into()) } }