Skip to content

Commit 599b9ef

Browse files
bors[bot]cuviper
andcommitted
Merge #15
15: Update to num 0.2; rustfmt everything r=cuviper a=cuviper Co-authored-by: Josh Stone <[email protected]>
2 parents ef4974e + b7c30e9 commit 599b9ef

File tree

6 files changed

+81
-36
lines changed

6 files changed

+81
-36
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ quote = "0.6"
1818
syn = "0.14"
1919

2020
[dev-dependencies]
21-
num = "0.1"
21+
num = "0.2"
2222

2323
[features]
2424
full-syntax = ["syn/full"]

src/lib.rs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,22 +102,31 @@ use syn::{Data, Fields, Ident};
102102
pub fn from_primitive(input: TokenStream) -> TokenStream {
103103
let ast: syn::DeriveInput = syn::parse(input).unwrap();
104104
let name = &ast.ident;
105-
let dummy_const = Ident::new(&format!("_IMPL_NUM_FROM_PRIMITIVE_FOR_{}", name), Span::call_site());
105+
let dummy_const = Ident::new(
106+
&format!("_IMPL_NUM_FROM_PRIMITIVE_FOR_{}", name),
107+
Span::call_site(),
108+
);
106109

107110
let variants = match ast.data {
108111
Data::Enum(ref data_enum) => &data_enum.variants,
109-
_ => panic!("`FromPrimitive` can be applied only to the enums, {} is not an enum", name)
112+
_ => panic!(
113+
"`FromPrimitive` can be applied only to the enums, {} is not an enum",
114+
name
115+
),
110116
};
111117

112118
let from_i64_var = quote! { n };
113-
let clauses: Vec<_> = variants.iter()
119+
let clauses: Vec<_> = variants
120+
.iter()
114121
.map(|variant| {
115122
let ident = &variant.ident;
116123
match variant.fields {
117124
Fields::Unit => (),
118-
_ => {
119-
panic!("`FromPrimitive` can be applied only to unitary enums, {}::{} is either struct or tuple", name, ident)
120-
},
125+
_ => panic!(
126+
"`FromPrimitive` can be applied only to unitary enums, \
127+
{}::{} is either struct or tuple",
128+
name, ident
129+
),
121130
}
122131

123132
quote! {
@@ -128,7 +137,11 @@ pub fn from_primitive(input: TokenStream) -> TokenStream {
128137
})
129138
.collect();
130139

131-
let from_i64_var = if clauses.is_empty() { quote!(_) } else { from_i64_var };
140+
let from_i64_var = if clauses.is_empty() {
141+
quote!(_)
142+
} else {
143+
from_i64_var
144+
};
132145

133146
let res = quote! {
134147
#[allow(non_upper_case_globals)]
@@ -206,14 +219,21 @@ pub fn from_primitive(input: TokenStream) -> TokenStream {
206219
pub fn to_primitive(input: TokenStream) -> TokenStream {
207220
let ast: syn::DeriveInput = syn::parse(input).unwrap();
208221
let name = &ast.ident;
209-
let dummy_const = Ident::new(&format!("_IMPL_NUM_TO_PRIMITIVE_FOR_{}", name), Span::call_site());
222+
let dummy_const = Ident::new(
223+
&format!("_IMPL_NUM_TO_PRIMITIVE_FOR_{}", name),
224+
Span::call_site(),
225+
);
210226

211227
let variants = match ast.data {
212228
Data::Enum(ref data_enum) => &data_enum.variants,
213-
_ => panic!("`ToPrimitive` can be applied only to the enums, {} is not an enum", name)
229+
_ => panic!(
230+
"`ToPrimitive` can be applied only to the enums, {} is not an enum",
231+
name
232+
),
214233
};
215234

216-
let variants: Vec<_> = variants.iter()
235+
let variants: Vec<_> = variants
236+
.iter()
217237
.map(|variant| {
218238
let ident = &variant.ident;
219239
match variant.fields {

tests/issue-6.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ extern crate num_derive;
55

66
#[derive(FromPrimitive, ToPrimitive)]
77
pub enum SomeEnum {
8-
A = 1
8+
A = 1,
99
}
1010

1111
#[test]

tests/issue-9.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use num::ToPrimitive;
77

88
#[derive(FromPrimitive, ToPrimitive)]
99
pub enum SomeEnum {
10-
A = 1
10+
A = 1,
1111
}
1212

1313
#[test]

tests/trivial.rs

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,40 @@ enum Color {
2121

2222
#[test]
2323
fn test_from_primitive_for_trivial_case() {
24-
let v: [Option<Color>; 4] = [num_renamed::FromPrimitive::from_u64(0),
25-
num_renamed::FromPrimitive::from_u64(1),
26-
num_renamed::FromPrimitive::from_u64(2),
27-
num_renamed::FromPrimitive::from_u64(3)];
24+
let v: [Option<Color>; 4] = [
25+
num_renamed::FromPrimitive::from_u64(0),
26+
num_renamed::FromPrimitive::from_u64(1),
27+
num_renamed::FromPrimitive::from_u64(2),
28+
num_renamed::FromPrimitive::from_u64(3),
29+
];
2830

29-
assert_eq!(v,
30-
[Some(Color::Red), Some(Color::Blue), Some(Color::Green), None]);
31+
assert_eq!(
32+
v,
33+
[
34+
Some(Color::Red),
35+
Some(Color::Blue),
36+
Some(Color::Green),
37+
None
38+
]
39+
);
3140
}
3241

3342
#[test]
3443
fn test_to_primitive_for_trivial_case() {
35-
let v: [Option<u64>; 3] = [num_renamed::ToPrimitive::to_u64(&Color::Red),
36-
num_renamed::ToPrimitive::to_u64(&Color::Blue),
37-
num_renamed::ToPrimitive::to_u64(&Color::Green)];
44+
let v: [Option<u64>; 3] = [
45+
num_renamed::ToPrimitive::to_u64(&Color::Red),
46+
num_renamed::ToPrimitive::to_u64(&Color::Blue),
47+
num_renamed::ToPrimitive::to_u64(&Color::Green),
48+
];
3849

3950
assert_eq!(v, [Some(0), Some(1), Some(2)]);
4051
}
4152

4253
#[test]
4354
fn test_reflexive_for_trivial_case() {
4455
let before: [u64; 3] = [0, 1, 2];
45-
let after: Vec<Option<u64>> = before.iter()
56+
let after: Vec<Option<u64>> = before
57+
.iter()
4658
.map(|&x| -> Option<Color> { num_renamed::FromPrimitive::from_u64(x) })
4759
.map(|x| x.and_then(|x| num_renamed::ToPrimitive::to_u64(&x)))
4860
.collect();

tests/with_custom_values.rs

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,43 @@ enum Color {
2424

2525
#[test]
2626
fn test_from_primitive_for_enum_with_custom_value() {
27-
let v: [Option<Color>; 5] = [num_renamed::FromPrimitive::from_u64(0),
28-
num_renamed::FromPrimitive::from_u64(5),
29-
num_renamed::FromPrimitive::from_u64(6),
30-
num_renamed::FromPrimitive::from_u64(-8isize as u64),
31-
num_renamed::FromPrimitive::from_u64(3)];
32-
33-
assert_eq!(v,
34-
[Some(Color::Red), Some(Color::Blue), Some(Color::Green), Some(Color::Alpha), None]);
27+
let v: [Option<Color>; 5] = [
28+
num_renamed::FromPrimitive::from_u64(0),
29+
num_renamed::FromPrimitive::from_u64(5),
30+
num_renamed::FromPrimitive::from_u64(6),
31+
num_renamed::FromPrimitive::from_u64(-8isize as u64),
32+
num_renamed::FromPrimitive::from_u64(3),
33+
];
34+
35+
assert_eq!(
36+
v,
37+
[
38+
Some(Color::Red),
39+
Some(Color::Blue),
40+
Some(Color::Green),
41+
Some(Color::Alpha),
42+
None
43+
]
44+
);
3545
}
3646

3747
#[test]
3848
fn test_to_primitive_for_enum_with_custom_value() {
39-
let v: [Option<u64>; 4] = [num_renamed::ToPrimitive::to_u64(&Color::Red),
40-
num_renamed::ToPrimitive::to_u64(&Color::Blue),
41-
num_renamed::ToPrimitive::to_u64(&Color::Green),
42-
num_renamed::ToPrimitive::to_u64(&Color::Alpha)];
49+
let v: [Option<u64>; 4] = [
50+
num_renamed::ToPrimitive::to_u64(&Color::Red),
51+
num_renamed::ToPrimitive::to_u64(&Color::Blue),
52+
num_renamed::ToPrimitive::to_u64(&Color::Green),
53+
num_renamed::ToPrimitive::to_u64(&Color::Alpha),
54+
];
4355

4456
assert_eq!(v, [Some(0), Some(5), Some(6), Some(-8isize as u64)]);
4557
}
4658

4759
#[test]
4860
fn test_reflexive_for_enum_with_custom_value() {
4961
let before: [u64; 3] = [0, 5, 6];
50-
let after: Vec<Option<u64>> = before.iter()
62+
let after: Vec<Option<u64>> = before
63+
.iter()
5164
.map(|&x| -> Option<Color> { num_renamed::FromPrimitive::from_u64(x) })
5265
.map(|x| x.and_then(|x| num_renamed::ToPrimitive::to_u64(&x)))
5366
.collect();

0 commit comments

Comments
 (0)