Restore Num trait

This restores the trait that was lost in 216e85fadf. It will eventually be broken up into a more fine-grained trait hierarchy in the future once a design can be agreed upon.
This commit is contained in:
Brendan Zabarauskas 2013-04-14 02:19:35 +10:00
parent fde6995229
commit ce6ee7bb04
8 changed files with 29 additions and 7 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -16,7 +16,7 @@ use core::cmp::{Eq, Ord};
use core::num::NumCast::from;
use std::cmp::FuzzyEq;
pub trait NumExt: NumCast + Eq + Ord {}
pub trait NumExt: Num + NumCast + Eq + Ord {}
pub trait FloatExt: NumExt + FuzzyEq<Self> {}

View File

@ -11,7 +11,7 @@
use core::cmp::Ord;
use core::num::NumCast::from;
pub trait NumExt: NumCast + Ord { }
pub trait NumExt: Num + NumCast + Ord { }
fn greater_than_one<T:NumExt>(n: &T) -> bool {
*n > from(1)

View File

@ -38,7 +38,7 @@ impl TypeExt for f64 {}
impl TypeExt for float {}
pub trait NumExt: TypeExt + Eq + Ord + NumCast {}
pub trait NumExt: TypeExt + Eq + Ord + Num + NumCast {}
impl NumExt for u8 {}
impl NumExt for u16 {}

View File

@ -11,7 +11,7 @@
use core::cmp::{Eq, Ord};
use core::num::NumCast::from;
pub trait NumExt: Eq + Ord + NumCast {}
pub trait NumExt: Eq + Ord + Num + NumCast {}
impl NumExt for f32 {}

View File

@ -11,7 +11,7 @@
use core::cmp::{Eq, Ord};
use core::num::NumCast::from;
pub trait NumExt: Eq + NumCast {}
pub trait NumExt: Eq + Num + NumCast {}
impl NumExt for f32 {}
impl NumExt for int {}