Implemented new Error struct
This custom Error struct will replace the existing ErrorKind enum for Pirate errors (though ErrorKind will remain in use)
This commit is contained in:
parent
11a9fc97f7
commit
78a56f27f8
1 changed files with 31 additions and 9 deletions
|
@ -15,26 +15,48 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use std::error::Error;
|
use std::error;
|
||||||
use std::fmt::{Display, Formatter, Result};
|
use std::fmt::{Display, Formatter, Result};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
pub struct Error {
|
||||||
|
kind: ErrorKind,
|
||||||
|
offender: String,
|
||||||
|
desc: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Error {
|
||||||
|
pub fn new(kind: ErrorKind, offender: String) -> Error {
|
||||||
|
Error {
|
||||||
|
kind: kind,
|
||||||
|
offender: offender,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl error::Error for Error {
|
||||||
|
fn description(&self) -> &str {
|
||||||
|
&format!("{} {}", self.kind.description(), self.offender);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for Error {
|
||||||
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
|
write!(f, "{}", self.description())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub enum ErrorKind {
|
pub enum ErrorKind {
|
||||||
InvalidOption,
|
InvalidOption,
|
||||||
MissingArgument,
|
MissingArgument,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Error for ErrorKind {
|
impl ErrorKind {
|
||||||
fn description(&self) -> &str {
|
fn description(&self) -> &str {
|
||||||
match *self {
|
match *self {
|
||||||
ErrorKind::InvalidOption => "An invalid option was passed to the program",
|
ErrorKind::InvalidOption => "An invalid option was passed to the program:",
|
||||||
ErrorKind::MissingArgument => "A required argument is missing",
|
ErrorKind::MissingArgument => "A required argument is missing:",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for ErrorKind {
|
|
||||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
|
||||||
write!(f, "{}", self.description())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue