Fork of https://github.com/dtolnay/itoa
945f297a24
warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:144:32 | 144 | let mut curr = buf.len() as isize; | ^^^^^^^^^^^^^^^^^^ ... 216 | / impl_Integer!( 217 | | I8_MAX_LEN => i8, 218 | | U8_MAX_LEN => u8, 219 | | I16_MAX_LEN => i16, ... | 222 | | U32_MAX_LEN => u32 223 | | as u32); | |___________- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: `-W clippy::cast-possible-wrap` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_wrap)]` = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u32` to `isize` may wrap around the value on targets with 32-bit wide pointers --> src/lib.rs:152:35 | 152 | let rem = (n % 10000) as isize; | ^^^^^^^^^^^^^^^^^^^^ ... 216 | / impl_Integer!( 217 | | I8_MAX_LEN => i8, 218 | | U8_MAX_LEN => u8, 219 | | I16_MAX_LEN => i16, ... | 222 | | U32_MAX_LEN => u32 223 | | as u32); | |___________- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u32` to `isize` may wrap around the value on targets with 32-bit wide pointers --> src/lib.rs:166:29 | 166 | let mut n = n as isize; // Possibly reduce 64-bit math. | ^^^^^^^^^^ ... 216 | / impl_Integer!( 217 | | I8_MAX_LEN => i8, 218 | | U8_MAX_LEN => u8, 219 | | I16_MAX_LEN => i16, ... | 222 | | U32_MAX_LEN => u32 223 | | as u32); | |___________- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:144:32 | 144 | let mut curr = buf.len() as isize; | ^^^^^^^^^^^^^^^^^^ ... 216 | / impl_Integer!( 217 | | I8_MAX_LEN => i8, 218 | | U8_MAX_LEN => u8, 219 | | I16_MAX_LEN => i16, ... | 222 | | U32_MAX_LEN => u32 223 | | as u32); | |___________- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:144:32 | 144 | let mut curr = buf.len() as isize; | ^^^^^^^^^^^^^^^^^^ ... 225 | impl_Integer!(I64_MAX_LEN => i64, U64_MAX_LEN => u64 as u64); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers --> src/lib.rs:152:35 | 152 | let rem = (n % 10000) as isize; | ^^^^^^^^^^^^^^^^^^^^ ... 225 | impl_Integer!(I64_MAX_LEN => i64, U64_MAX_LEN => u64 as u64); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers --> src/lib.rs:166:29 | 166 | let mut n = n as isize; // Possibly reduce 64-bit math. | ^^^^^^^^^^ ... 225 | impl_Integer!(I64_MAX_LEN => i64, U64_MAX_LEN => u64 as u64); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:144:32 | 144 | let mut curr = buf.len() as isize; | ^^^^^^^^^^^^^^^^^^ ... 234 | impl_Integer!(I64_MAX_LEN => isize, U64_MAX_LEN => usize as u64); | ---------------------------------------------------------------- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers --> src/lib.rs:152:35 | 152 | let rem = (n % 10000) as isize; | ^^^^^^^^^^^^^^^^^^^^ ... 234 | impl_Integer!(I64_MAX_LEN => isize, U64_MAX_LEN => usize as u64); | ---------------------------------------------------------------- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers --> src/lib.rs:166:29 | 166 | let mut n = n as isize; // Possibly reduce 64-bit math. | ^^^^^^^^^^ ... 234 | impl_Integer!(I64_MAX_LEN => isize, U64_MAX_LEN => usize as u64); | ---------------------------------------------------------------- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:254:32 | 254 | let mut curr = buf.len() as isize; | ^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:259:59 | 259 | let buf1 = unsafe { buf_ptr.offset(curr - U64_MAX_LEN as isize) as *mut [MaybeUninit<u8>; U64... | ^^^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:260:25 | 260 | curr -= rem.write(unsafe { &mut *buf1 }).len() as isize; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:264:34 | 264 | let target = buf.len() as isize - 19; | ^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:272:63 | 272 | let buf2 = unsafe { buf_ptr.offset(curr - U64_MAX_LEN as isize) as *mut [MaybeUninit<u8>;... | ^^^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:273:29 | 273 | curr -= rem.write(unsafe { &mut *buf2 }).len() as isize; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) warning: casting `usize` to `isize` may wrap around the value --> src/lib.rs:277:38 | 277 | let target = buf.len() as isize - 38; | ^^^^^^^^^^^^^^^^^^ ... 310 | impl_Integer128!(I128_MAX_LEN => i128, U128_MAX_LEN => u128); | ------------------------------------------------------------ in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info) |
||
---|---|---|
.github | ||
benches | ||
chart | ||
fuzz | ||
src | ||
tests | ||
.gitignore | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
performance.png |
README.md
itoa
This crate provides a fast conversion of integer primitives to decimal strings.
The implementation comes straight from libcore but avoids the performance
penalty of going through core::fmt::Formatter
.
See also ryu
for printing floating point primitives.
Version requirement: rustc 1.36+
[dependencies]
itoa = "1.0"
Example
fn main() {
let mut buffer = itoa::Buffer::new();
let printed = buffer.format(128u64);
assert_eq!(printed, "128");
}
Performance (lower is better)
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.