html-to-markdown 2.24.1 → 2.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +9 -6
  3. data/ext/html-to-markdown-rb/native/Cargo.lock +13 -13
  4. data/ext/html-to-markdown-rb/native/Cargo.toml +1 -1
  5. data/lib/html_to_markdown/version.rb +1 -1
  6. data/rust-vendor/bytemuck/.cargo-checksum.json +1 -1
  7. data/rust-vendor/bytemuck/.cargo_vcs_info.json +1 -1
  8. data/rust-vendor/bytemuck/.github/workflows/rust.yml +4 -4
  9. data/rust-vendor/bytemuck/Cargo.lock +16 -9
  10. data/rust-vendor/bytemuck/Cargo.toml +6 -2
  11. data/rust-vendor/bytemuck/Cargo.toml.orig +7 -6
  12. data/rust-vendor/bytemuck/changelog.md +5 -0
  13. data/rust-vendor/bytemuck/src/must.rs +1 -1
  14. data/rust-vendor/bytemuck/src/pod.rs +13 -0
  15. data/rust-vendor/bytemuck/src/zeroable.rs +13 -0
  16. data/rust-vendor/bytemuck/src/zeroable_in_option.rs +2 -2
  17. data/rust-vendor/bytemuck/tests/std_tests.rs +1 -1
  18. data/rust-vendor/cc/.cargo-checksum.json +1 -1
  19. data/rust-vendor/cc/.cargo_vcs_info.json +1 -1
  20. data/rust-vendor/cc/CHANGELOG.md +8 -0
  21. data/rust-vendor/cc/Cargo.lock +3 -3
  22. data/rust-vendor/cc/Cargo.toml +2 -2
  23. data/rust-vendor/cc/Cargo.toml.orig +2 -2
  24. data/rust-vendor/cc/src/lib.rs +1 -0
  25. data/rust-vendor/cc/src/target/generated.rs +10 -0
  26. data/rust-vendor/find-msvc-tools/.cargo-checksum.json +1 -1
  27. data/rust-vendor/find-msvc-tools/.cargo_vcs_info.json +1 -1
  28. data/rust-vendor/find-msvc-tools/CHANGELOG.md +6 -0
  29. data/rust-vendor/find-msvc-tools/Cargo.lock +1 -1
  30. data/rust-vendor/find-msvc-tools/Cargo.toml +1 -1
  31. data/rust-vendor/find-msvc-tools/Cargo.toml.orig +1 -1
  32. data/rust-vendor/find-msvc-tools/src/find_tools.rs +55 -20
  33. data/rust-vendor/html-to-markdown-rs/src/converter/handlers/link.rs +1 -9
  34. data/rust-vendor/html-to-markdown-rs/src/converter/inline/link.rs +2 -11
  35. data/rust-vendor/html-to-markdown-rs/src/converter/list/definition.rs +30 -7
  36. data/rust-vendor/html-to-markdown-rs/src/converter/semantic/definition_list.rs +30 -7
  37. data/rust-vendor/html-to-markdown-rs/tests/issue_199_regressions.rs +15 -0
  38. data/rust-vendor/html-to-markdown-rs/tests/issue_200_regressions.rs +36 -0
  39. data/rust-vendor/zerocopy/.cargo-checksum.json +1 -1
  40. data/rust-vendor/zerocopy/.cargo_vcs_info.json +2 -1
  41. data/rust-vendor/zerocopy/Cargo.lock +3 -3
  42. data/rust-vendor/zerocopy/Cargo.toml +4 -4
  43. data/rust-vendor/zerocopy/Cargo.toml.orig +4 -4
  44. data/rust-vendor/zerocopy/src/doctests.rs +27 -0
  45. data/rust-vendor/zerocopy/src/error.rs +30 -0
  46. data/rust-vendor/zerocopy/src/layout.rs +239 -135
  47. data/rust-vendor/zerocopy/src/lib.rs +16 -0
  48. data/rust-vendor/zerocopy/src/macros.rs +255 -125
  49. data/rust-vendor/zerocopy/src/pointer/mod.rs +1 -1
  50. data/rust-vendor/zerocopy/src/pointer/ptr.rs +109 -23
  51. data/rust-vendor/zerocopy/src/util/macro_util.rs +344 -383
  52. data/rust-vendor/zerocopy/src/util/mod.rs +38 -0
  53. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-mut-const.stderr +8 -0
  54. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-mut-dst-not-a-reference.stderr +10 -0
  55. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-mut-src-unsized.stderr +11 -3
  56. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-dst-mutable.stderr +10 -0
  57. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-dst-not-a-reference.stderr +10 -0
  58. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-src-dst-not-references.stderr +10 -0
  59. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-src-unsized.stderr +11 -3
  60. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-dst-not-tryfrombytes.stderr +0 -10
  61. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-dst-mutable.stderr +1 -1
  62. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-dst-not-immutable-tryfrombytes.stderr +0 -10
  63. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-src-not-immutable-intobytes.stderr +1 -11
  64. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-mut-const.stderr +9 -0
  65. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-mut-dst-not-a-reference.stderr +10 -0
  66. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-mut-src-unsized.stderr +16 -8
  67. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-dst-mutable.stderr +10 -0
  68. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-dst-not-a-reference.stderr +10 -0
  69. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-src-dst-not-references.stderr +10 -0
  70. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-src-unsized.stderr +16 -8
  71. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-dst-not-tryfrombytes.stderr +38 -38
  72. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-dst-not-immutable-tryfrombytes.stderr +33 -33
  73. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-src-not-immutable-intobytes.stderr +12 -12
  74. data/rust-vendor/zerocopy/tests/ui-stable/transmute-mut-const.stderr +9 -0
  75. data/rust-vendor/zerocopy/tests/ui-stable/transmute-mut-dst-not-a-reference.stderr +10 -0
  76. data/rust-vendor/zerocopy/tests/ui-stable/transmute-mut-src-unsized.stderr +16 -8
  77. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-dst-mutable.stderr +10 -0
  78. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-dst-not-a-reference.stderr +10 -0
  79. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-src-dst-not-references.stderr +10 -0
  80. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-src-unsized.stderr +16 -8
  81. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-dst-not-tryfrombytes.stderr +38 -38
  82. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-dst-not-immutable-tryfrombytes.stderr +33 -33
  83. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-src-not-immutable-intobytes.stderr +12 -12
  84. data/rust-vendor/zerocopy-derive/.cargo-checksum.json +1 -1
  85. data/rust-vendor/zerocopy-derive/.cargo_vcs_info.json +1 -1
  86. data/rust-vendor/zerocopy-derive/Cargo.lock +1 -1
  87. data/rust-vendor/zerocopy-derive/Cargo.toml +1 -1
  88. data/rust-vendor/zerocopy-derive/Cargo.toml.orig +1 -1
  89. data/rust-vendor/zerocopy-derive/tests/ui-nightly/enum.stderr +3 -3
  90. data/rust-vendor/zerocopy-derive/tests/ui-nightly/struct.stderr +5 -5
  91. data/rust-vendor/zerocopy-derive/tests/ui-stable/enum.stderr +3 -3
  92. data/rust-vendor/zerocopy-derive/tests/ui-stable/struct.stderr +5 -5
  93. data/rust-vendor/zmij/.cargo-checksum.json +1 -1
  94. data/rust-vendor/zmij/.cargo_vcs_info.json +1 -1
  95. data/rust-vendor/zmij/Cargo.lock +16 -16
  96. data/rust-vendor/zmij/Cargo.toml +1 -1
  97. data/rust-vendor/zmij/Cargo.toml.orig +1 -1
  98. data/rust-vendor/zmij/README.md +1 -1
  99. data/rust-vendor/zmij/src/lib.rs +54 -93
  100. metadata +4 -50
  101. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-mut-dst-unsized.rs +0 -15
  102. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-mut-dst-unsized.stderr +0 -8
  103. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-dst-unsized.rs +0 -15
  104. data/rust-vendor/zerocopy/tests/ui-msrv/transmute-ref-dst-unsized.stderr +0 -8
  105. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-alignment-increase.rs +0 -19
  106. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-alignment-increase.stderr +0 -9
  107. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-size-decrease.rs +0 -19
  108. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-size-decrease.stderr +0 -9
  109. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-size-increase.rs +0 -19
  110. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_mut-size-increase.stderr +0 -17
  111. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-alignment-increase.rs +0 -18
  112. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-alignment-increase.stderr +0 -9
  113. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-size-decrease.rs +0 -18
  114. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-size-decrease.stderr +0 -9
  115. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-size-increase.rs +0 -18
  116. data/rust-vendor/zerocopy/tests/ui-msrv/try_transmute_ref-size-increase.stderr +0 -9
  117. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-mut-dst-unsized.rs +0 -15
  118. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-mut-dst-unsized.stderr +0 -16
  119. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-dst-unsized.rs +0 -15
  120. data/rust-vendor/zerocopy/tests/ui-nightly/transmute-ref-dst-unsized.stderr +0 -16
  121. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-alignment-increase.rs +0 -19
  122. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-alignment-increase.stderr +0 -9
  123. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-size-decrease.rs +0 -19
  124. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-size-decrease.stderr +0 -9
  125. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-size-increase.rs +0 -19
  126. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_mut-size-increase.stderr +0 -17
  127. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-alignment-increase.rs +0 -18
  128. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-alignment-increase.stderr +0 -9
  129. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-size-decrease.rs +0 -18
  130. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-size-decrease.stderr +0 -9
  131. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-size-increase.rs +0 -18
  132. data/rust-vendor/zerocopy/tests/ui-nightly/try_transmute_ref-size-increase.stderr +0 -9
  133. data/rust-vendor/zerocopy/tests/ui-stable/transmute-mut-dst-unsized.rs +0 -15
  134. data/rust-vendor/zerocopy/tests/ui-stable/transmute-mut-dst-unsized.stderr +0 -16
  135. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-dst-unsized.rs +0 -15
  136. data/rust-vendor/zerocopy/tests/ui-stable/transmute-ref-dst-unsized.stderr +0 -16
  137. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-alignment-increase.rs +0 -19
  138. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-alignment-increase.stderr +0 -9
  139. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-size-decrease.rs +0 -19
  140. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-size-decrease.stderr +0 -9
  141. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-size-increase.rs +0 -19
  142. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_mut-size-increase.stderr +0 -17
  143. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-alignment-increase.rs +0 -18
  144. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-alignment-increase.stderr +0 -9
  145. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-size-decrease.rs +0 -18
  146. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-size-decrease.stderr +0 -9
  147. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-size-increase.rs +0 -18
  148. data/rust-vendor/zerocopy/tests/ui-stable/try_transmute_ref-size-increase.stderr +0 -9
@@ -439,7 +439,7 @@ help: the trait `PaddingFree<IntoBytes1, 1>` is not implemented for `()`
439
439
  but trait `PaddingFree<IntoBytes1, 0>` is implemented for it
440
440
  --> $WORKSPACE/src/util/macro_util.rs
441
441
  |
442
- 65 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
442
+ 62 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
443
443
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
444
444
  = help: see issue #48214
445
445
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -457,7 +457,7 @@ help: the trait `PaddingFree<IntoBytes2, 3>` is not implemented for `()`
457
457
  but trait `PaddingFree<IntoBytes2, 0>` is implemented for it
458
458
  --> $WORKSPACE/src/util/macro_util.rs
459
459
  |
460
- 65 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
460
+ 62 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
461
461
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
462
462
  = help: see issue #48214
463
463
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -475,7 +475,7 @@ help: the trait `PaddingFree<IntoBytes3, 2>` is not implemented for `()`
475
475
  but trait `PaddingFree<IntoBytes3, 0>` is implemented for it
476
476
  --> $WORKSPACE/src/util/macro_util.rs
477
477
  |
478
- 65 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
478
+ 62 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
479
479
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
480
480
  = help: see issue #48214
481
481
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -293,7 +293,7 @@ help: the trait `PaddingFree<IntoBytes2, 1>` is not implemented for `()`
293
293
  but trait `PaddingFree<IntoBytes2, 0>` is implemented for it
294
294
  --> $WORKSPACE/src/util/macro_util.rs
295
295
  |
296
- 65 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
296
+ 62 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
297
297
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
298
298
  = help: see issue #48214
299
299
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -311,7 +311,7 @@ help: the trait `PaddingFree<IntoBytes3, 1>` is not implemented for `()`
311
311
  but trait `PaddingFree<IntoBytes3, 0>` is implemented for it
312
312
  --> $WORKSPACE/src/util/macro_util.rs
313
313
  |
314
- 65 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
314
+ 62 | impl<T: ?Sized> PaddingFree<T, 0> for () {}
315
315
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
316
316
  = help: see issue #48214
317
317
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -365,7 +365,7 @@ help: the trait `DynamicPaddingFree<IntoBytes5, true>` is not implemented for `(
365
365
  but trait `DynamicPaddingFree<IntoBytes5, false>` is implemented for it
366
366
  --> $WORKSPACE/src/util/macro_util.rs
367
367
  |
368
- 83 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
368
+ 80 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
369
369
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
370
370
  = help: see issue #48214
371
371
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -383,7 +383,7 @@ help: the trait `DynamicPaddingFree<IntoBytes6, true>` is not implemented for `(
383
383
  but trait `DynamicPaddingFree<IntoBytes6, false>` is implemented for it
384
384
  --> $WORKSPACE/src/util/macro_util.rs
385
385
  |
386
- 83 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
386
+ 80 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
387
387
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
388
388
  = help: see issue #48214
389
389
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -401,7 +401,7 @@ help: the trait `DynamicPaddingFree<IntoBytes7, true>` is not implemented for `(
401
401
  but trait `DynamicPaddingFree<IntoBytes7, false>` is implemented for it
402
402
  --> $WORKSPACE/src/util/macro_util.rs
403
403
  |
404
- 83 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
404
+ 80 | impl<T: ?Sized> DynamicPaddingFree<T, false> for () {}
405
405
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
406
406
  = help: see issue #48214
407
407
  = note: this error originates in the derive macro `IntoBytes` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -1 +1 @@
1
- {"files":{".cargo_vcs_info.json":"896db6a00a278b78790f0caed75b0f00c6e176f7da0925c043fc36436df3832d",".github/workflows/ci.yml":"c6a8fe8d53e0556a4ebaefae94a0b2ffa74288e1652093667b135ed37f4374f2","Cargo.lock":"e43e0cc64ab8679454ccfe278646a24d81ad8268aa98d8d673f63a65ec18c16d","Cargo.toml":"eef7de4eba70aa061a4057cc8f069a7bc1d44919a4d166a662af1496eaa26920","Cargo.toml.orig":"b483331d2bcac27f8122d9e5ac2743bce859e765b7c4373c6dab2eb6ce813f39","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"65315bd4766121389659b6bdc6cdad1ba5cb837cf948d8630aa8cec81a827afa","benches/bench.rs":"28d23a29046c4d50c73a19fd81ad80cc97e474af6d8c30f81dcc8c9621065cca","build.rs":"13201b550236a9ff2186b5303c77341d3b0874989fdaf39613a7452e4ce57817","src/hint.rs":"7e03e3c031b7c20127517b794a4b641b3efb6ccd4c7b1aae1b7b6f28b9968052","src/lib.rs":"8aa33c9a00f49219eeaf9b0f3ef3fedcbbf0301bc2fcf7885b7885e65a60f602","src/stdarch_x86.rs":"b19b4c54f0c08c92f96d18c152f796d85cc17f9e6195f3e7d5612f05f28836fb","src/tests.rs":"04ba0d4a2b0e46e0c4f294af3bc1a1c938e72b7f9d0435b2eac0848ce5d4866a","src/traits.rs":"d289ade8d66f03096349f1cf2d4e68fad792e7b089bc956410cf700d9aad67e1","tests/exhaustive.rs":"3d5c1036dcb391bfd038fcb9feb03380b467a184ed9e0463d52f35b521684029","tests/ryu_comparison.rs":"5874eaff05486484029b333a8e7104db62b2706c8e64aecd69d8ccffad0880c3","tests/test.rs":"0f5efa4354a932d767ed561ddee411a10dd71faafa202372f3c00d81b88d1381"},"package":"02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"}
1
+ {"files":{".cargo_vcs_info.json":"fc4cfe0823e2b7f29e3cbf71460386760fe0e52e23fd2d654b588bd60b29a99d",".github/workflows/ci.yml":"c6a8fe8d53e0556a4ebaefae94a0b2ffa74288e1652093667b135ed37f4374f2","Cargo.lock":"d4964a22db25c234c84332212016fdab413d4c8cabde24bcd5d57f8f4b6da042","Cargo.toml":"206bff1b72ce6a6d5123d53a6a4930ec103a634efd03deec287f437fc0c54e44","Cargo.toml.orig":"a65a097cbb8779590a2243773290f7dddb2bcaa904255485428dd4c1be39272f","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"cb4094e229373958e8de8b88048f7f09ce41b403b14543469354ba4049075eda","benches/bench.rs":"28d23a29046c4d50c73a19fd81ad80cc97e474af6d8c30f81dcc8c9621065cca","build.rs":"13201b550236a9ff2186b5303c77341d3b0874989fdaf39613a7452e4ce57817","src/hint.rs":"7e03e3c031b7c20127517b794a4b641b3efb6ccd4c7b1aae1b7b6f28b9968052","src/lib.rs":"15a8f3dda4a51320e1da93a052f015b2a9cc720306d3967dce854feab44f96de","src/stdarch_x86.rs":"b19b4c54f0c08c92f96d18c152f796d85cc17f9e6195f3e7d5612f05f28836fb","src/tests.rs":"04ba0d4a2b0e46e0c4f294af3bc1a1c938e72b7f9d0435b2eac0848ce5d4866a","src/traits.rs":"d289ade8d66f03096349f1cf2d4e68fad792e7b089bc956410cf700d9aad67e1","tests/exhaustive.rs":"3d5c1036dcb391bfd038fcb9feb03380b467a184ed9e0463d52f35b521684029","tests/ryu_comparison.rs":"5874eaff05486484029b333a8e7104db62b2706c8e64aecd69d8ccffad0880c3","tests/test.rs":"0f5efa4354a932d767ed561ddee411a10dd71faafa202372f3c00d81b88d1381"},"package":"1966f8ac2c1f76987d69a74d0e0f929241c10e78136434e3be70ff7f58f64214"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "git": {
3
- "sha1": "60c35b195b3b19dc6f49f6004dad70e6457fb30c"
3
+ "sha1": "3a9446327c05de8446d7423854bbb03d0b243968"
4
4
  },
5
5
  "path_in_vcs": ""
6
6
  }
@@ -46,9 +46,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
46
46
 
47
47
  [[package]]
48
48
  name = "cc"
49
- version = "1.2.54"
49
+ version = "1.2.55"
50
50
  source = "registry+https://github.com/rust-lang/crates.io-index"
51
- checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583"
51
+ checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29"
52
52
  dependencies = [
53
53
  "find-msvc-tools",
54
54
  "shlex",
@@ -89,18 +89,18 @@ dependencies = [
89
89
 
90
90
  [[package]]
91
91
  name = "clap"
92
- version = "4.5.54"
92
+ version = "4.5.56"
93
93
  source = "registry+https://github.com/rust-lang/crates.io-index"
94
- checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394"
94
+ checksum = "a75ca66430e33a14957acc24c5077b503e7d374151b2b4b3a10c83b4ceb4be0e"
95
95
  dependencies = [
96
96
  "clap_builder",
97
97
  ]
98
98
 
99
99
  [[package]]
100
100
  name = "clap_builder"
101
- version = "4.5.54"
101
+ version = "4.5.56"
102
102
  source = "registry+https://github.com/rust-lang/crates.io-index"
103
- checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00"
103
+ checksum = "793207c7fa6300a0608d1080b858e5fdbe713cdc1c8db9fb17777d8a13e63df0"
104
104
  dependencies = [
105
105
  "anstyle",
106
106
  "clap_lex",
@@ -159,9 +159,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
159
159
 
160
160
  [[package]]
161
161
  name = "find-msvc-tools"
162
- version = "0.1.8"
162
+ version = "0.1.9"
163
163
  source = "registry+https://github.com/rust-lang/crates.io-index"
164
- checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
164
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
165
165
 
166
166
  [[package]]
167
167
  name = "getrandom"
@@ -436,7 +436,7 @@ dependencies = [
436
436
  "memchr",
437
437
  "serde",
438
438
  "serde_core",
439
- "zmij 1.0.16",
439
+ "zmij 1.0.17",
440
440
  ]
441
441
 
442
442
  [[package]]
@@ -545,18 +545,18 @@ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
545
545
 
546
546
  [[package]]
547
547
  name = "zerocopy"
548
- version = "0.8.33"
548
+ version = "0.8.37"
549
549
  source = "registry+https://github.com/rust-lang/crates.io-index"
550
- checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
550
+ checksum = "7456cf00f0685ad319c5b1693f291a650eaf345e941d082fc4e03df8a03996ac"
551
551
  dependencies = [
552
552
  "zerocopy-derive",
553
553
  ]
554
554
 
555
555
  [[package]]
556
556
  name = "zerocopy-derive"
557
- version = "0.8.33"
557
+ version = "0.8.37"
558
558
  source = "registry+https://github.com/rust-lang/crates.io-index"
559
- checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
559
+ checksum = "1328722bbf2115db7e19d69ebcc15e795719e2d66b60827c6a69a117365e37a0"
560
560
  dependencies = [
561
561
  "proc-macro2",
562
562
  "quote",
@@ -565,13 +565,13 @@ dependencies = [
565
565
 
566
566
  [[package]]
567
567
  name = "zmij"
568
- version = "1.0.16"
568
+ version = "1.0.17"
569
569
  source = "registry+https://github.com/rust-lang/crates.io-index"
570
- checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65"
570
+ checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"
571
571
 
572
572
  [[package]]
573
573
  name = "zmij"
574
- version = "1.0.17"
574
+ version = "1.0.18"
575
575
  dependencies = [
576
576
  "criterion",
577
577
  "no-panic",
@@ -13,7 +13,7 @@
13
13
  edition = "2021"
14
14
  rust-version = "1.68"
15
15
  name = "zmij"
16
- version = "1.0.17"
16
+ version = "1.0.18"
17
17
  authors = ["David Tolnay <dtolnay@gmail.com>"]
18
18
  build = "build.rs"
19
19
  exclude = ["*.png"]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "zmij"
3
- version = "1.0.17"
3
+ version = "1.0.18"
4
4
  authors = ["David Tolnay <dtolnay@gmail.com>"]
5
5
  categories = ["value-formatting", "no-std", "no-std::no-alloc"]
6
6
  description = "A double-to-string conversion algorithm based on Schubfach and yy"
@@ -11,7 +11,7 @@ numbers to decimal strings.
11
11
  This Rust implementation is a line-by-line port of Victor Zverovich's
12
12
  implementation in C++, [https://github.com/vitaut/zmij][upstream].
13
13
 
14
- [upstream]: https://github.com/vitaut/zmij/tree/25bd96ee970eadf94f08fbd6ff39b712c4f55e7e
14
+ [upstream]: https://github.com/vitaut/zmij/tree/fb4fafadd8ad318df51ee00140699062db8d5b3e
15
15
 
16
16
  ## Example
17
17
 
@@ -41,7 +41,7 @@
41
41
  //! ![performance](https://raw.githubusercontent.com/dtolnay/zmij/master/dtoa-benchmark.png)
42
42
 
43
43
  #![no_std]
44
- #![doc(html_root_url = "https://docs.rs/zmij/1.0.17")]
44
+ #![doc(html_root_url = "https://docs.rs/zmij/1.0.18")]
45
45
  #![deny(unsafe_op_in_unsafe_fn)]
46
46
  #![allow(non_camel_case_types, non_snake_case)]
47
47
  #![allow(
@@ -305,6 +305,7 @@ const fn compute_dec_exp(bin_exp: i32, regular: bool) -> i32 {
305
305
  (bin_exp * LOG10_2_SIG - !regular as i32 * LOG10_3_OVER_4_SIG) >> LOG10_2_EXP
306
306
  }
307
307
 
308
+ #[inline]
308
309
  const fn do_compute_exp_shift(bin_exp: i32, dec_exp: i32) -> u8 {
309
310
  debug_assert!(dec_exp >= -350 && dec_exp <= 350);
310
311
  // log2_pow10_sig = round(log2(10) * 2**log2_pow10_exp) + 1
@@ -359,6 +360,7 @@ static EXP_SHIFTS: ExpShiftTable = {
359
360
  // 10^dec_exp puts the decimal point in different bit positions:
360
361
  // 3 * 2**59 / 100 = 1.72...e+16 (needs shift = 1 + 1)
361
362
  // 3 * 2**60 / 100 = 3.45...e+16 (needs shift = 2 + 1)
363
+ #[inline]
362
364
  unsafe fn compute_exp_shift<UInt, const ONLY_REGULAR: bool>(bin_exp: i32, dec_exp: i32) -> u8
363
365
  where
364
366
  UInt: traits::UInt,
@@ -464,29 +466,25 @@ unsafe fn write8(buffer: *mut u8, value: u64) {
464
466
  }
465
467
  }
466
468
 
467
- // Writes a significand consisting of up to 9 decimal digits (8-9 for normals)
468
- // and removes trailing zeros.
469
+ // Writes a significand and removes trailing zeros. value has up to 17 decimal
470
+ // digits (16-17 for normals) for double (num_bits == 64) and up to 9 digits
471
+ // (8-9 for normals) for float. The significant digits start from buffer[1].
472
+ // buffer[0] may contain '0' after this function if the leading digit is zero.
469
473
  #[cfg_attr(feature = "no-panic", no_panic)]
470
- unsafe fn write_significand9(mut buffer: *mut u8, value: u32, has9digits: bool) -> *mut u8 {
471
- buffer = unsafe { write_if(buffer, value / 100_000_000, has9digits) };
472
- let bcd = to_bcd8(u64::from(value % 100_000_000));
473
- unsafe {
474
- write8(buffer, bcd | ZEROS);
475
- buffer.add(count_trailing_nonzeros(bcd))
474
+ #[inline]
475
+ unsafe fn write_significand<Float>(mut buffer: *mut u8, value: u64, extra_digit: bool) -> *mut u8
476
+ where
477
+ Float: FloatTraits,
478
+ {
479
+ if Float::NUM_BITS == 32 {
480
+ buffer = unsafe { write_if(buffer, (value / 100_000_000) as u32, extra_digit) };
481
+ let bcd = to_bcd8(value % 100_000_000);
482
+ unsafe {
483
+ write8(buffer, bcd + ZEROS);
484
+ return buffer.add(count_trailing_nonzeros(bcd));
485
+ }
476
486
  }
477
- }
478
487
 
479
- // Writes a significand consisting of up to 17 decimal digits (16-17 for
480
- // normals) and removes trailing zeros. The significant digits start from
481
- // buffer[1]. buffer[0] may contain '0' after this function if the significand
482
- // has length 16.
483
- #[cfg_attr(feature = "no-panic", no_panic)]
484
- unsafe fn write_significand17(
485
- mut buffer: *mut u8,
486
- value: u64,
487
- has17digits: bool,
488
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))] value_div10: i64,
489
- ) -> *mut u8 {
490
488
  #[cfg(not(any(
491
489
  all(target_arch = "aarch64", target_feature = "neon", not(miri)),
492
490
  all(target_arch = "x86_64", target_feature = "sse2", not(miri)),
@@ -495,17 +493,17 @@ unsafe fn write_significand17(
495
493
  // Digits/pairs of digits are denoted by letters: value = abbccddeeffgghhii.
496
494
  let abbccddee = (value / 100_000_000) as u32;
497
495
  let ffgghhii = (value % 100_000_000) as u32;
498
- buffer = unsafe { write_if(buffer, abbccddee / 100_000_000, has17digits) };
496
+ buffer = unsafe { write_if(buffer, abbccddee / 100_000_000, extra_digit) };
499
497
  let bcd = to_bcd8(u64::from(abbccddee % 100_000_000));
500
498
  unsafe {
501
- write8(buffer, bcd | ZEROS);
499
+ write8(buffer, bcd + ZEROS);
502
500
  }
503
501
  if ffgghhii == 0 {
504
502
  return unsafe { buffer.add(count_trailing_nonzeros(bcd)) };
505
503
  }
506
504
  let bcd = to_bcd8(u64::from(ffgghhii));
507
505
  unsafe {
508
- write8(buffer.add(8), bcd | ZEROS);
506
+ write8(buffer.add(8), bcd + ZEROS);
509
507
  buffer.add(8).add(count_trailing_nonzeros(bcd))
510
508
  }
511
509
  }
@@ -518,14 +516,15 @@ unsafe fn write_significand17(
518
516
 
519
517
  const NEG10K: i32 = -10000 + 0x10000;
520
518
 
521
- struct MulConstants {
519
+ #[repr(C, align(64))]
520
+ struct Consts {
522
521
  mul_const: u64,
523
522
  hundred_million: u64,
524
523
  multipliers32: int32x4_t,
525
524
  multipliers16: int16x8_t,
526
525
  }
527
526
 
528
- static CONSTANTS: MulConstants = MulConstants {
527
+ static CONSTS: Consts = Consts {
529
528
  mul_const: 0xabcc77118461cefd,
530
529
  hundred_million: 100000000,
531
530
  multipliers32: unsafe {
@@ -541,7 +540,7 @@ unsafe fn write_significand17(
541
540
  },
542
541
  };
543
542
 
544
- let mut c = ptr::addr_of!(CONSTANTS);
543
+ let mut c = ptr::addr_of!(CONSTS);
545
544
 
546
545
  // Compiler barrier, or clang doesn't load from memory and generates 15
547
546
  // more instructions.
@@ -566,7 +565,7 @@ unsafe fn write_significand17(
566
565
  let a = (umul128(abbccddee, c.mul_const) >> 90) as u64;
567
566
  let bbccddee = abbccddee - a * hundred_million;
568
567
 
569
- buffer = unsafe { write_if(buffer, a as u32, has17digits) };
568
+ buffer = unsafe { write_if(buffer, a as u32, extra_digit) };
570
569
 
571
570
  unsafe {
572
571
  let ffgghhii_bbccddee_64: uint64x1_t =
@@ -630,22 +629,15 @@ unsafe fn write_significand17(
630
629
  {
631
630
  use crate::stdarch_x86::*;
632
631
 
633
- let last_digit = (value - value_div10 as u64 * 10) as u32;
634
-
635
- // We always write 17 digits into the buffer, but the first one can be
636
- // zero. buffer points to the second place in the output buffer to allow
637
- // for the insertion of the decimal point, so we can use the first place
638
- // as scratch.
639
- buffer = unsafe { buffer.offset(isize::from(has17digits) - 1) };
640
- unsafe {
641
- *buffer.add(16) = last_digit as u8 + b'0';
642
- }
632
+ let abbccddee = (value / 100_000_000) as u32;
633
+ let ffgghhii = (value % 100_000_000) as u32;
634
+ let a = abbccddee / 100_000_000;
635
+ let bbccddee = abbccddee % 100_000_000;
643
636
 
644
- let abcdefgh = (value_div10 / 100_000_000) as u32;
645
- let ijklmnop = (value_div10 % 100_000_000) as u32;
637
+ buffer = unsafe { write_if(buffer, a, extra_digit) };
646
638
 
647
639
  #[repr(C, align(64))]
648
- struct Constants {
640
+ struct Consts {
649
641
  div10k: u128,
650
642
  neg10k: u128,
651
643
  div100: u128,
@@ -663,7 +655,7 @@ unsafe fn write_significand17(
663
655
  zeros: u128,
664
656
  }
665
657
 
666
- impl Constants {
658
+ impl Consts {
667
659
  const fn splat64(x: u64) -> u128 {
668
660
  ((x as u128) << 64) | x as u128
669
661
  }
@@ -689,28 +681,27 @@ unsafe fn write_significand17(
689
681
  }
690
682
  }
691
683
 
692
- static CONSTS: Constants = Constants {
693
- div10k: Constants::splat64(DIV10K_SIG as u64),
694
- neg10k: Constants::splat64(NEG10K as u64),
695
- div100: Constants::splat32(DIV100_SIG),
696
- div10: Constants::splat16(((1u32 << 16) / 10 + 1) as u16),
684
+ static CONSTS: Consts = Consts {
685
+ div10k: Consts::splat64(DIV10K_SIG as u64),
686
+ neg10k: Consts::splat64(NEG10K as u64),
687
+ div100: Consts::splat32(DIV100_SIG),
688
+ div10: Consts::splat16(((1u32 << 16) / 10 + 1) as u16),
697
689
  #[cfg(target_feature = "sse4.1")]
698
- neg100: Constants::splat32(NEG100),
690
+ neg100: Consts::splat32(NEG100),
699
691
  #[cfg(target_feature = "sse4.1")]
700
- neg10: Constants::splat16((1 << 8) - 10),
692
+ neg10: Consts::splat16((1 << 8) - 10),
701
693
  #[cfg(target_feature = "sse4.1")]
702
- bswap: Constants::pack8(15, 14, 13, 12, 11, 10, 9, 8) as u128
703
- | (Constants::pack8(7, 6, 5, 4, 3, 2, 1, 0) as u128) << 64,
694
+ bswap: Consts::pack8(15, 14, 13, 12, 11, 10, 9, 8) as u128
695
+ | (Consts::pack8(7, 6, 5, 4, 3, 2, 1, 0) as u128) << 64,
704
696
  #[cfg(not(target_feature = "sse4.1"))]
705
- hundred: Constants::splat32(100),
697
+ hundred: Consts::splat32(100),
706
698
  #[cfg(not(target_feature = "sse4.1"))]
707
- moddiv10: Constants::splat16(10 * (1 << 8) - 1),
708
- zeros: Constants::splat64(ZEROS),
699
+ moddiv10: Consts::splat16(10 * (1 << 8) - 1),
700
+ zeros: Consts::splat64(ZEROS),
709
701
  };
710
702
 
711
703
  let mut c = ptr::addr_of!(CONSTS);
712
- // Make the compiler forget where the constants came from to ensure they
713
- // are loaded from memory.
704
+ // Load constants from memory.
714
705
  unsafe {
715
706
  asm!("/*{0}*/", inout(reg) c);
716
707
  }
@@ -731,9 +722,9 @@ unsafe fn write_significand17(
731
722
  let moddiv10 = unsafe { _mm_load_si128(ptr::addr_of!((*c).moddiv10).cast::<__m128i>()) };
732
723
  let zeros = unsafe { _mm_load_si128(ptr::addr_of!((*c).zeros).cast::<__m128i>()) };
733
724
 
734
- // The BCD sequences are based on the ones provided by Xiang JunBo.
725
+ // The BCD sequences are based on ones provided by Xiang JunBo.
735
726
  unsafe {
736
- let x: __m128i = _mm_set_epi64x(i64::from(abcdefgh), i64::from(ijklmnop));
727
+ let x: __m128i = _mm_set_epi64x(i64::from(bbccddee), i64::from(ffgghhii));
737
728
  let y: __m128i = _mm_add_epi64(
738
729
  x,
739
730
  _mm_mul_epu32(neg10k, _mm_srli_epi64(_mm_mul_epu32(x, div10k), DIV10K_EXP)),
@@ -769,15 +760,10 @@ unsafe fn write_significand17(
769
760
  // Count leading zeros.
770
761
  let mask128: __m128i = _mm_cmpgt_epi8(bcd, _mm_setzero_si128());
771
762
  let mask = _mm_movemask_epi8(mask128) as u32;
772
- // We don't need a zero-check here: if the mask were zero, either
773
- // the significand is zero which is handled elsewhere or the only
774
- // non-zero digit is the last digit which we factored off. But in
775
- // that case the number would be printed with a different exponent
776
- // that shifts the last digit into the first position.
777
763
  let len = 32 - mask.leading_zeros() as usize;
778
764
 
779
765
  _mm_storeu_si128(buffer.cast::<__m128i>(), digits);
780
- buffer.add(if last_digit != 0 { 17 } else { len })
766
+ buffer.add(len)
781
767
  }
782
768
  }
783
769
  }
@@ -785,11 +771,10 @@ unsafe fn write_significand17(
785
771
  struct ToDecimalResult {
786
772
  sig: i64,
787
773
  exp: i32,
788
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
789
- sig_div10: i64,
790
774
  }
791
775
 
792
776
  #[cfg_attr(feature = "no-panic", no_panic)]
777
+ #[inline]
793
778
  fn to_decimal_schubfach<UInt>(bin_sig: UInt, bin_exp: i64, regular: bool) -> ToDecimalResult
794
779
  where
795
780
  UInt: traits::UInt,
@@ -824,13 +809,10 @@ where
824
809
  let div10 = (upper >> BOUND_SHIFT) / UInt::from(10);
825
810
  let shorter = div10 * UInt::from(10);
826
811
  if (shorter << BOUND_SHIFT) >= lower {
827
- let result = ToDecimalResult {
812
+ return ToDecimalResult {
828
813
  sig: shorter.into() as i64,
829
814
  exp: dec_exp,
830
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
831
- sig_div10: div10.into() as i64,
832
815
  };
833
- return result;
834
816
  }
835
817
 
836
818
  let scaled_sig = umulhi_inexact_to_odd(pow10.hi, pow10.lo, bin_sig_shifted << exp_shift);
@@ -853,8 +835,6 @@ where
853
835
  ToDecimalResult {
854
836
  sig: dec_sig.into() as i64,
855
837
  exp: dec_exp,
856
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
857
- sig_div10: (dec_sig / UInt::from(10)).into() as i64,
858
838
  }
859
839
  }
860
840
 
@@ -862,6 +842,7 @@ where
862
842
  // Converts a binary FP number bin_sig * 2**bin_exp to the shortest decimal
863
843
  // representation, where bin_exp = raw_exp - exp_offset.
864
844
  #[cfg_attr(feature = "no-panic", no_panic)]
845
+ #[inline]
865
846
  fn to_decimal_fast<Float, UInt>(bin_sig: UInt, raw_exp: i64, regular: bool) -> ToDecimalResult
866
847
  where
867
848
  Float: FloatTraits,
@@ -966,8 +947,6 @@ where
966
947
  return ToDecimalResult {
967
948
  sig: hint::select_unpredictable(round_up, shorter + 10, dec_sig),
968
949
  exp: dec_exp,
969
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
970
- sig_div10: 0,
971
950
  };
972
951
  }
973
952
  shorter += i64::from(round_up) * 10;
@@ -975,8 +954,6 @@ where
975
954
  return ToDecimalResult {
976
955
  sig: hint::select_unpredictable(use_shorter, shorter, longer),
977
956
  exp: dec_exp,
978
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
979
- sig_div10: div10 as i64 + i64::from(use_shorter) * i64::from(round_up),
980
957
  };
981
958
  }
982
959
  to_decimal_schubfach(bin_sig, bin_exp, regular)
@@ -1019,10 +996,6 @@ where
1019
996
  dec.sig *= 10;
1020
997
  dec.exp -= 1;
1021
998
  }
1022
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
1023
- {
1024
- dec.sig_div10 = dec.sig / 10;
1025
- }
1026
999
  } else {
1027
1000
  dec = to_decimal_fast::<Float, Float::SigType>(
1028
1001
  bin_sig | Float::IMPLICIT_BIT,
@@ -1039,19 +1012,7 @@ where
1039
1012
  }
1040
1013
 
1041
1014
  // Write significand.
1042
- let end = if Float::NUM_BITS == 64 {
1043
- unsafe {
1044
- write_significand17(
1045
- buffer.add(1),
1046
- dec.sig as u64,
1047
- extra_digit,
1048
- #[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(miri)))]
1049
- dec.sig_div10,
1050
- )
1051
- }
1052
- } else {
1053
- unsafe { write_significand9(buffer.add(1), dec.sig as u32, extra_digit) }
1054
- };
1015
+ let end = unsafe { write_significand::<Float>(buffer.add(1), dec.sig as u64, extra_digit) };
1055
1016
 
1056
1017
  let length = unsafe { end.offset_from(buffer.add(1)) } as usize;
1057
1018