# Untitled

a guest
Sep 11th, 2019
92
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. use std::convert::{ Into, From };
2.
3. enum Integer { I8(i8), I16(i16), I32(i32), U8(u8), U16(u16), U32(u32) }
4.
5. enum Float { F32(f32), F64(f64) }
6.
7. enum Number { F(Float), I(Integer) }
8.
9.
10. impl Into<f32> for Integer {
11. fn into(self) -> f32 {
12. match self {
13. Integer::I8(n) => return n as f32,
14. Integer::I16(n) => return n as f32,
15. Integer::I32(n) => return n as f32,
16. Integer::U8(n) => return n as f32,
17. Integer::U16(n) => return n as f32,
18. Integer::U32(n) => return n as f32,
19. }
20. }
21. }
22.
23. impl Into<f32> for Float {
24. fn into(self) -> f32 {
25. match self {
26. Float::F32(n) => return n,
27. Float::F64(n) => return n as f32
28. }
29. }
30. }
31.
32. impl Into<f32> for Number {
33. fn into(self) -> f32 {
34. match self {
35. Number::F(n) => return n.into(),
36. Number::I(n) => return n.into()
37. }
38. }
39. }
40.
41. fn sum<T>(a: T, b: T) -> f32 where T: Into<f32> {
42. return a.into() + b.into();
43. }
44.
45. fn multiply<T>(a: T, b: T) -> f32 where T: Into<f32> {
46. return a.into() * b.into();
47. }
48.
49. fn subtract<T>(a: T, b: T) -> f32 where T: Into<f32> {
50. return a.into() - b.into();
51. }
52.
53. fn divide<T>(a: T, b: T) -> f32 where T: Into<f32> {
54. return a.into() / b.into();
55. }
56.
57. fn pow<T>(base: T, expo: T) -> f32 where T: Into<f32> {
58. return base.into().powf(expo.into());
59. }
60.
61. fn sqrt(value: Number) -> f32 {
62. return pow(value, Number::F(Float::F32(0.5)));
63. }
RAW Paste Data