about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorBrendan Zabarauskas <bjzaba@yahoo.com.au>2013-04-14 02:19:35 +1000
committerBrendan Zabarauskas <bjzaba@yahoo.com.au>2013-04-14 02:19:35 +1000
commitce6ee7bb041044c3e236be7aefae97931e596407 (patch)
tree32077b5a247e5a07c34e1deff7b62b0da50d2ddf /src/libcore
parentfde6995229ff1bf99fccbcfee8b55e27afdb11ec (diff)
downloadrust-ce6ee7bb041044c3e236be7aefae97931e596407.tar.gz
rust-ce6ee7bb041044c3e236be7aefae97931e596407.zip
Restore Num trait
This restores the trait that was lost in 216e85fadf465c25fe7bc4a9f06f8162ec12b552. It will eventually be broken up into a more fine-grained trait hierarchy in the future once a design can be agreed upon.
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/core.rc2
-rw-r--r--src/libcore/num/num.rs22
-rw-r--r--src/libcore/prelude.rs2
3 files changed, 24 insertions, 2 deletions
diff --git a/src/libcore/core.rc b/src/libcore/core.rc
index 3368f6df870..41db07ca34c 100644
--- a/src/libcore/core.rc
+++ b/src/libcore/core.rc
@@ -99,7 +99,7 @@ pub use vec::{OwnedVector, OwnedCopyableVector};
 pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter};
 pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times};
 
-pub use num::NumCast;
+pub use num::{Num, NumCast};
 pub use ptr::Ptr;
 pub use to_str::ToStr;
 pub use clone::Clone;
diff --git a/src/libcore/num/num.rs b/src/libcore/num/num.rs
index d200a68c400..333c7ce02b2 100644
--- a/src/libcore/num/num.rs
+++ b/src/libcore/num/num.rs
@@ -16,6 +16,28 @@ use kinds::Copy;
 
 pub mod strconv;
 
+pub trait Num: Eq + Zero + One
+             + Neg<Self>
+             + Add<Self,Self>
+             + Sub<Self,Self>
+             + Mul<Self,Self>
+             + Div<Self,Self>
+             + Modulo<Self,Self> {}
+
+impl Num for u8 {}
+impl Num for u16 {}
+impl Num for u32 {}
+impl Num for u64 {}
+impl Num for uint {}
+impl Num for i8 {}
+impl Num for i16 {}
+impl Num for i32 {}
+impl Num for i64 {}
+impl Num for int {}
+impl Num for f32 {}
+impl Num for f64 {}
+impl Num for float {}
+
 pub trait IntConvertible {
     fn to_int(&self) -> int;
     fn from_int(n: int) -> Self;
diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs
index 9c3bf04b2a8..e148493ca45 100644
--- a/src/libcore/prelude.rs
+++ b/src/libcore/prelude.rs
@@ -34,7 +34,7 @@ pub use hash::Hash;
 pub use iter::{BaseIter, ReverseIter, MutableIter, ExtendedIter, EqIter};
 pub use iter::{CopyableIter, CopyableOrderedIter, CopyableNonstrictIter};
 pub use iter::Times;
-pub use num::NumCast;
+pub use num::{Num, NumCast};
 pub use path::GenericPath;
 pub use path::Path;
 pub use path::PosixPath;