diff options
| author | Eric Holk <eholk@mozilla.com> | 2011-07-08 12:18:54 -0700 |
|---|---|---|
| committer | Eric Holk <eholk@mozilla.com> | 2011-07-08 14:02:26 -0700 |
| commit | 79ca673af79aecc3c63334dee593ded838007e11 (patch) | |
| tree | 3cc5ce72659f1d86460af68d8c0fac1ef1d4b45e /src/lib | |
| parent | 4c309321e0979552f8c9230c6425c96b59ac80da (diff) | |
| download | rust-79ca673af79aecc3c63334dee593ded838007e11.tar.gz rust-79ca673af79aecc3c63334dee593ded838007e11.zip | |
Adding more support for working with u64s.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/std.rc | 1 | ||||
| -rw-r--r-- | src/lib/u64.rs | 39 |
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); } |
