refactor: use error type instead of unit
This commit is contained in:
parent
60884483ec
commit
1d408d443b
|
@ -1,3 +1,5 @@
|
||||||
|
use errors::UnknownVariant;
|
||||||
|
|
||||||
use std::fmt::{Display, Formatter, Result as FmtResult};
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
@ -34,7 +36,7 @@ impl DataCenter {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromStr for DataCenter {
|
impl FromStr for DataCenter {
|
||||||
type Err = ();
|
type Err = UnknownVariant;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
let data_center = match s.to_lowercase().as_str() {
|
let data_center = match s.to_lowercase().as_str() {
|
||||||
|
@ -44,7 +46,7 @@ impl FromStr for DataCenter {
|
||||||
"gaia" => DataCenter::Gaia,
|
"gaia" => DataCenter::Gaia,
|
||||||
"mana" => DataCenter::Mana,
|
"mana" => DataCenter::Mana,
|
||||||
"primal" => DataCenter::Primal,
|
"primal" => DataCenter::Primal,
|
||||||
_ => return Err(())
|
_ => return Err(UnknownVariant("DataCenter", s.into()))
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(data_center)
|
Ok(data_center)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct UnknownVariant(pub &'static str, pub String);
|
||||||
|
|
||||||
|
impl Display for UnknownVariant {
|
||||||
|
fn fmt(&self, f: &mut Formatter) -> FmtResult {
|
||||||
|
write!(f, "unknown variant {} for type {}", self.1, self.0)
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
use errors::UnknownVariant;
|
||||||
use roles::Role;
|
use roles::Role;
|
||||||
|
|
||||||
use std::fmt::{Display, Formatter, Result as FmtResult};
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
|
@ -97,7 +98,7 @@ impl Job {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromStr for Job {
|
impl FromStr for Job {
|
||||||
type Err = ();
|
type Err = UnknownVariant;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
let job = match s.to_lowercase().as_str() {
|
let job = match s.to_lowercase().as_str() {
|
||||||
|
@ -119,7 +120,7 @@ impl FromStr for Job {
|
||||||
"paladin" | "pld" => Job::Paladin,
|
"paladin" | "pld" => Job::Paladin,
|
||||||
"warrior" | "war" => Job::Warrior,
|
"warrior" | "war" => Job::Warrior,
|
||||||
|
|
||||||
_ => return Err(())
|
_ => return Err(UnknownVariant("Job", s.into()))
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(job)
|
Ok(job)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
pub mod data_centers;
|
pub mod data_centers;
|
||||||
|
pub mod errors;
|
||||||
pub mod jobs;
|
pub mod jobs;
|
||||||
pub mod roles;
|
pub mod roles;
|
||||||
pub mod worlds;
|
pub mod worlds;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use errors::UnknownVariant;
|
||||||
|
|
||||||
use std::fmt::{Display, Formatter, Result as FmtResult};
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
@ -21,14 +23,14 @@ impl Role {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromStr for Role {
|
impl FromStr for Role {
|
||||||
type Err = ();
|
type Err = UnknownVariant;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
let role = match s.to_lowercase().as_str() {
|
let role = match s.to_lowercase().as_str() {
|
||||||
"dps" => Role::Dps,
|
"dps" => Role::Dps,
|
||||||
"healer" => Role::Healer,
|
"healer" => Role::Healer,
|
||||||
"tank" => Role::Tank,
|
"tank" => Role::Tank,
|
||||||
_ => return Err(())
|
_ => return Err(UnknownVariant("Role", s.into()))
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(role)
|
Ok(role)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use data_centers::DataCenter;
|
use data_centers::DataCenter;
|
||||||
|
use errors::UnknownVariant;
|
||||||
|
|
||||||
use std::fmt::{Display, Formatter, Result as FmtResult};
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
@ -322,7 +323,7 @@ impl World {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromStr for World {
|
impl FromStr for World {
|
||||||
type Err = ();
|
type Err = UnknownVariant;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
let world = match s.to_lowercase().as_str() {
|
let world = match s.to_lowercase().as_str() {
|
||||||
|
@ -398,7 +399,7 @@ impl FromStr for World {
|
||||||
"malboro" => World::Malboro,
|
"malboro" => World::Malboro,
|
||||||
"ultros" => World::Ultros,
|
"ultros" => World::Ultros,
|
||||||
|
|
||||||
_ => return Err(())
|
_ => return Err(UnknownVariant("World", s.into()))
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(world)
|
Ok(world)
|
||||||
|
|
Loading…
Reference in New Issue