about summary refs log tree commit diff
path: root/src/libcore/int-template/int.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcore/int-template/int.rs')
-rw-r--r--src/libcore/int-template/int.rs75
1 files changed, 41 insertions, 34 deletions
diff --git a/src/libcore/int-template/int.rs b/src/libcore/int-template/int.rs
index 8b898b173ac..c1f2ca944dd 100644
--- a/src/libcore/int-template/int.rs
+++ b/src/libcore/int-template/int.rs
@@ -1,38 +1,45 @@
-pub type T = int;
-pub const bits: uint = uint::bits;
+pub use inst::pow;
 
-/// Returns `base` raised to the power of `exponent`
-pub fn pow(base: int, exponent: uint) -> int {
-    if exponent == 0u { return 1; } //Not mathemtically true if ~[base == 0]
-    if base     == 0  { return 0; }
-    let mut my_pow  = exponent;
-    let mut acc     = 1;
-    let mut multiplier = base;
-    while(my_pow > 0u) {
-      if my_pow % 2u == 1u {
-         acc *= multiplier;
-      }
-      my_pow     /= 2u;
-      multiplier *= multiplier;
+mod inst {
+    pub type T = int;
+    pub const bits: uint = uint::bits;
+
+    /// Returns `base` raised to the power of `exponent`
+    pub fn pow(base: int, exponent: uint) -> int {
+        if exponent == 0u {
+            //Not mathemtically true if ~[base == 0]
+            return 1;
+        }
+        if base     == 0  { return 0; }
+        let mut my_pow  = exponent;
+        let mut acc     = 1;
+        let mut multiplier = base;
+        while(my_pow > 0u) {
+            if my_pow % 2u == 1u {
+                acc *= multiplier;
+            }
+            my_pow     /= 2u;
+            multiplier *= multiplier;
+        }
+        return acc;
     }
-    return acc;
-}
 
-#[test]
-fn test_pow() {
-    assert (pow(0, 0u) == 1);
-    assert (pow(0, 1u) == 0);
-    assert (pow(0, 2u) == 0);
-    assert (pow(-1, 0u) == 1);
-    assert (pow(1, 0u) == 1);
-    assert (pow(-3, 2u) == 9);
-    assert (pow(-3, 3u) == -27);
-    assert (pow(4, 9u) == 262144);
-}
+    #[test]
+    fn test_pow() {
+        assert (pow(0, 0u) == 1);
+        assert (pow(0, 1u) == 0);
+        assert (pow(0, 2u) == 0);
+        assert (pow(-1, 0u) == 1);
+        assert (pow(1, 0u) == 1);
+        assert (pow(-3, 2u) == 9);
+        assert (pow(-3, 3u) == -27);
+        assert (pow(4, 9u) == 262144);
+    }
 
-#[test]
-fn test_overflows() {
-   assert (max_value > 0);
-   assert (min_value <= 0);
-   assert (min_value + max_value + 1 == 0);
-}
+    #[test]
+    fn test_overflows() {
+        assert (max_value > 0);
+        assert (min_value <= 0);
+        assert (min_value + max_value + 1 == 0);
+    }
+}
\ No newline at end of file