chiark / gitweb /
zcoord: Sort out to_str_buf
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 21 Nov 2020 12:39:49 +0000 (12:39 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 21 Nov 2020 12:39:49 +0000 (12:39 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
zcoord/zcoord.rs

index e2c47b6c559c13f891a427017baba33238478e58..b09010926f2a0fe93113e2d23ad5223f983b7780 100644 (file)
@@ -141,11 +141,11 @@ const fn lv(raw: RawLimbVal) -> LimbVal { LimbVal(Wrapping(raw)) }
 impl LimbVal {
   fn primitive(self) -> RawLimbVal { self.0.0 }
   /// return value is the top bits, shifted
-  fn to_str_buf(self, out: &mut [Tail1]) -> LimbVal {
+  fn to_str_buf(self, out: &mut [Tail1; DIGITS_PER_LIMB]) -> LimbVal {
     let mut l = self;
-    for p in out[0..DIGITS_PER_LIMB].rchunks_exact_mut(1) {
+    for p in out.into_iter().rev() {
       let v = (l & DIGIT_MASK).primitive() as u8;
-      p[0] = if v < 10 { b'0' + v } else { (b'a' - 10) + v };
+      *p = if v < 10 { b'0' + v } else { (b'a' - 10) + v };
       l >>= BITS_PER_DIGIT;
     }
     l
@@ -277,7 +277,7 @@ impl Mutable {
 
     for l in limbs.iter().cloned() {
       if l >= LIMB_MODULUS { throw!(Overflow) };
-      l.to_str_buf(w);
+      l.to_str_buf((&mut w[0..DIGITS_PER_LIMB]).try_into().unwrap());
       if let Some(p) = w.get_mut(DIGITS_PER_LIMB) {
         *p = b'_';
       } else {