• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Sep 11th, 2019 89 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.

Top