Skip to content

Commit ed13982

Browse files
authored
Merge pull request #45 from tommady/issue-44-get-rid-of-error-chain-dependency
Issue 44 get rid of error chain dependency
2 parents c02bd91 + af7b8c8 commit ed13982

12 files changed

+47
-27
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ include = [
2121
travis-ci = { repository = "greyblake/ta-rs", branch = "master" }
2222

2323
[dependencies]
24-
error-chain = "0.12"
2524
serde = { version = "1.0", features = ["derive"], optional = true}
2625

2726
[dev-dependencies]

src/data_item.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ impl DataItemBuilder {
140140
};
141141
Ok(item)
142142
} else {
143-
Err(Error::from_kind(ErrorKind::DataItemInvalid))
143+
Err(TaError::DataItemInvalid)
144144
}
145145
} else {
146-
Err(Error::from_kind(ErrorKind::DataItemIncomplete))
146+
Err(TaError::DataItemIncomplete)
147147
}
148148
}
149149
}

src/errors.rs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,31 @@
1-
error_chain! {
2-
errors {
3-
InvalidParameter { description("invalid parameter") }
4-
DataItemIncomplete { description("data item is incomplete") }
5-
DataItemInvalid { description("data item is invalid") }
1+
use std::error::Error;
2+
use std::fmt::{Display, Formatter};
3+
4+
pub type Result<T> = std::result::Result<T, TaError>;
5+
6+
#[derive(Debug)]
7+
pub enum TaError {
8+
InvalidParameter,
9+
DataItemIncomplete,
10+
DataItemInvalid,
11+
}
12+
13+
impl Display for TaError {
14+
fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
15+
match *self {
16+
TaError::InvalidParameter => write!(f, "invalid parameter"),
17+
TaError::DataItemIncomplete => write!(f, "data item is incomplete"),
18+
TaError::DataItemInvalid => write!(f, "data item is invalid"),
19+
}
20+
}
21+
}
22+
23+
impl Error for TaError {
24+
fn source(&self) -> Option<&(dyn Error + 'static)> {
25+
match *self {
26+
TaError::InvalidParameter => None,
27+
TaError::DataItemIncomplete => None,
28+
TaError::DataItemInvalid => None,
29+
}
630
}
731
}

src/indicators/efficiency_ratio.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::fmt;
22

3-
use crate::errors::{Error, ErrorKind, Result};
3+
use crate::errors::{Result, TaError};
44
use crate::traits::{Close, Next, Period, Reset};
55
#[cfg(feature = "serde")]
66
use serde::{Deserialize, Serialize};
@@ -42,7 +42,7 @@ pub struct EfficiencyRatio {
4242
impl EfficiencyRatio {
4343
pub fn new(period: usize) -> Result<Self> {
4444
match period {
45-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
45+
0 => Err(TaError::InvalidParameter),
4646
_ => Ok(Self {
4747
period,
4848
index: 0,

src/indicators/exponential_moving_average.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::fmt;
22

3-
use crate::errors::{Error, ErrorKind, Result};
3+
use crate::errors::{Result, TaError};
44
use crate::{Close, Next, Period, Reset};
55
#[cfg(feature = "serde")]
66
use serde::{Deserialize, Serialize};
@@ -65,7 +65,7 @@ pub struct ExponentialMovingAverage {
6565
impl ExponentialMovingAverage {
6666
pub fn new(period: usize) -> Result<Self> {
6767
match period {
68-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
68+
0 => Err(TaError::InvalidParameter),
6969
_ => Ok(Self {
7070
period,
7171
k: 2.0 / (period + 1) as f64,

src/indicators/maximum.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::f64::INFINITY;
22
use std::fmt;
33

4-
use crate::errors::{Error, ErrorKind, Result};
4+
use crate::errors::{Result, TaError};
55
use crate::{High, Next, Period, Reset};
66
#[cfg(feature = "serde")]
77
use serde::{Deserialize, Serialize};
@@ -37,7 +37,7 @@ pub struct Maximum {
3737
impl Maximum {
3838
pub fn new(period: usize) -> Result<Self> {
3939
match period {
40-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
40+
0 => Err(TaError::InvalidParameter),
4141
_ => Ok(Self {
4242
period,
4343
max_index: 0,

src/indicators/minimum.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::f64::INFINITY;
22
use std::fmt;
33

4-
use crate::errors::{Error, ErrorKind, Result};
4+
use crate::errors::{Result, TaError};
55
use crate::{Low, Next, Period, Reset};
66
#[cfg(feature = "serde")]
77
use serde::{Deserialize, Serialize};
@@ -36,7 +36,7 @@ pub struct Minimum {
3636
impl Minimum {
3737
pub fn new(period: usize) -> Result<Self> {
3838
match period {
39-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
39+
0 => Err(TaError::InvalidParameter),
4040
_ => Ok(Self {
4141
period,
4242
min_index: 0,

src/indicators/money_flow_index.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::collections::VecDeque;
22
use std::fmt;
33

4-
use crate::errors::{Error, ErrorKind, Result};
4+
use crate::errors::{Result, TaError};
55
use crate::{Close, High, Low, Next, Period, Reset, Volume};
66
#[cfg(feature = "serde")]
77
use serde::{Deserialize, Serialize};
@@ -68,7 +68,7 @@ pub struct MoneyFlowIndex {
6868
impl MoneyFlowIndex {
6969
pub fn new(period: usize) -> Result<Self> {
7070
match period {
71-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
71+
0 => Err(TaError::InvalidParameter),
7272
_ => Ok(Self {
7373
period,
7474
money_flows: VecDeque::with_capacity(period + 1),

src/indicators/rate_of_change.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::fmt;
22

3-
use crate::errors::{Error, ErrorKind, Result};
3+
use crate::errors::{Result, TaError};
44
use crate::traits::{Close, Next, Period, Reset};
55
#[cfg(feature = "serde")]
66
use serde::{Deserialize, Serialize};
@@ -51,7 +51,7 @@ pub struct RateOfChange {
5151
impl RateOfChange {
5252
pub fn new(period: usize) -> Result<Self> {
5353
match period {
54-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
54+
0 => Err(TaError::InvalidParameter),
5555
_ => Ok(Self {
5656
period,
5757
index: 0,

src/indicators/simple_moving_average.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::fmt;
22

3-
use crate::errors::{Error, ErrorKind, Result};
3+
use crate::errors::{Result, TaError};
44
use crate::{Close, Next, Period, Reset};
55
#[cfg(feature = "serde")]
66
use serde::{Deserialize, Serialize};
@@ -52,7 +52,7 @@ pub struct SimpleMovingAverage {
5252
impl SimpleMovingAverage {
5353
pub fn new(period: usize) -> Result<Self> {
5454
match period {
55-
0 => Err(Error::from_kind(ErrorKind::InvalidParameter)),
55+
0 => Err(TaError::InvalidParameter),
5656
_ => Ok(Self {
5757
period,
5858
index: 0,

0 commit comments

Comments
 (0)