about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorEric Holk <eholk@mozilla.com>2011-07-08 12:18:54 -0700
committerEric Holk <eholk@mozilla.com>2011-07-08 14:02:26 -0700
commit79ca673af79aecc3c63334dee593ded838007e11 (patch)
tree3cc5ce72659f1d86460af68d8c0fac1ef1d4b45e /src/lib
parent4c309321e0979552f8c9230c6425c96b59ac80da (diff)
downloadrust-79ca673af79aecc3c63334dee593ded838007e11.tar.gz
rust-79ca673af79aecc3c63334dee593ded838007e11.zip
Adding more support for working with u64s.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/std.rc1
-rw-r--r--src/lib/u64.rs39
2 files changed, 40 insertions, 0 deletions
diff --git a/src/lib/std.rc b/src/lib/std.rc
index 21fd2cbbbc6..20d3e3f071f 100644
--- a/src/lib/std.rc
+++ b/src/lib/std.rc
@@ -12,6 +12,7 @@
 mod int;
 mod uint;
 mod u8;
+mod u64;
 mod vec;
 mod ivec;
 mod str;
diff --git a/src/lib/u64.rs b/src/lib/u64.rs
new file mode 100644
index 00000000000..5bedd102c2a
--- /dev/null
+++ b/src/lib/u64.rs
@@ -0,0 +1,39 @@
+fn to_str(u64 n, uint radix) -> str {
+    assert(0u < radix && radix <= 16u);
+
+    auto r64 = radix as u64;
+    
+    fn digit(u64 n) -> str {
+        ret alt (n) {
+            case (0u64) { "0" }
+            case (1u64) { "1" }
+            case (2u64) { "2" }
+            case (3u64) { "3" }
+            case (4u64) { "4" }
+            case (5u64) { "5" }
+            case (6u64) { "6" }
+            case (7u64) { "7" }
+            case (8u64) { "8" }
+            case (9u64) { "9" }
+            case (10u64) { "a" }
+            case (11u64) { "b" }
+            case (12u64) { "c" }
+            case (13u64) { "d" }
+            case (14u64) { "e" }
+            case (15u64) { "f" }
+            case (_) { fail }
+        };
+    }
+
+    if n == 0u64 { ret "0"; }
+
+    auto s = "";
+
+    while(n > 0u64) {
+        s = digit(n % r64) + s;
+        n /= r64;
+    }
+    ret s;
+}
+
+fn str(u64 n) -> str { ret to_str(n, 10u); }