Skip to content

Commit ce6ee7b

Browse files
committed
Restore Num trait
This restores the trait that was lost in 216e85f. It will eventually be broken up into a more fine-grained trait hierarchy in the future once a design can be agreed upon.
1 parent fde6995 commit ce6ee7b

File tree

8 files changed

+29
-7
lines changed

8 files changed

+29
-7
lines changed

src/libcore/core.rc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ pub use vec::{OwnedVector, OwnedCopyableVector};
9999
pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter};
100100
pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times};
101101

102-
pub use num::NumCast;
102+
pub use num::{Num, NumCast};
103103
pub use ptr::Ptr;
104104
pub use to_str::ToStr;
105105
pub use clone::Clone;

src/libcore/num/num.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,28 @@ use kinds::Copy;
1616

1717
pub mod strconv;
1818

19+
pub trait Num: Eq + Zero + One
20+
+ Neg<Self>
21+
+ Add<Self,Self>
22+
+ Sub<Self,Self>
23+
+ Mul<Self,Self>
24+
+ Div<Self,Self>
25+
+ Modulo<Self,Self> {}
26+
27+
impl Num for u8 {}
28+
impl Num for u16 {}
29+
impl Num for u32 {}
30+
impl Num for u64 {}
31+
impl Num for uint {}
32+
impl Num for i8 {}
33+
impl Num for i16 {}
34+
impl Num for i32 {}
35+
impl Num for i64 {}
36+
impl Num for int {}
37+
impl Num for f32 {}
38+
impl Num for f64 {}
39+
impl Num for float {}
40+
1941
pub trait IntConvertible {
2042
fn to_int(&self) -> int;
2143
fn from_int(n: int) -> Self;

src/libcore/prelude.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub use hash::Hash;
3434
pub use iter::{BaseIter, ReverseIter, MutableIter, ExtendedIter, EqIter};
3535
pub use iter::{CopyableIter, CopyableOrderedIter, CopyableNonstrictIter};
3636
pub use iter::Times;
37-
pub use num::NumCast;
37+
pub use num::{Num, NumCast};
3838
pub use path::GenericPath;
3939
pub use path::Path;
4040
pub use path::PosixPath;

src/test/run-pass/trait-inheritance-num.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use core::cmp::{Eq, Ord};
1616
use core::num::NumCast::from;
1717
use std::cmp::FuzzyEq;
1818

19-
pub trait NumExt: NumCast + Eq + Ord {}
19+
pub trait NumExt: Num + NumCast + Eq + Ord {}
2020

2121
pub trait FloatExt: NumExt + FuzzyEq<Self> {}
2222

src/test/run-pass/trait-inheritance-num1.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::Ord;
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: NumCast + Ord { }
14+
pub trait NumExt: Num + NumCast + Ord { }
1515

1616
fn greater_than_one<T:NumExt>(n: &T) -> bool {
1717
*n > from(1)

src/test/run-pass/trait-inheritance-num2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ impl TypeExt for f64 {}
3838
impl TypeExt for float {}
3939

4040

41-
pub trait NumExt: TypeExt + Eq + Ord + NumCast {}
41+
pub trait NumExt: TypeExt + Eq + Ord + Num + NumCast {}
4242

4343
impl NumExt for u8 {}
4444
impl NumExt for u16 {}

src/test/run-pass/trait-inheritance-num3.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::{Eq, Ord};
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: Eq + Ord + NumCast {}
14+
pub trait NumExt: Eq + Ord + Num + NumCast {}
1515

1616
impl NumExt for f32 {}
1717

src/test/run-pass/trait-inheritance-num5.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::{Eq, Ord};
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: Eq + NumCast {}
14+
pub trait NumExt: Eq + Num + NumCast {}
1515

1616
impl NumExt for f32 {}
1717
impl NumExt for int {}

0 commit comments

Comments
 (0)