1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use std::str::FromStr;
pub mod parse;
use parse::*;
#[derive(Debug, PartialEq)]
pub enum GBPError {
ParseError(ParseMoneyError),
OtherError,
}
impl From<ParseMoneyError> for GBPError {
fn from(p:ParseMoneyError) -> Self {
GBPError::ParseError(p)
}
}
#[derive(Debug, PartialEq)]
pub struct GBP(pub i32);
impl FromStr for GBP {
type Err = GBPError;
fn from_str(s:&str) -> Result<Self, Self::Err>{
Ok(GBP(parse_sym_money(s, '£', 2)?))
}
}