Go to file
David Tolnay 945f297a24
Ignore cast_possible_wrap pedantic clippy lint
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)
2024-04-19 20:42:48 -07:00
.github Revert "Temporarily disable miri on doctests" 2024-04-08 11:52:12 -07:00
benches Clean up test and bench macro syntax 2021-12-11 21:04:54 -08:00
chart Adjust chart margins and background for dark themes 2021-12-12 00:23:32 -08:00
fuzz Update fuzz crate gitignore to ignore coverage dir 2023-03-25 21:35:19 -07:00
src Ignore cast_possible_wrap pedantic clippy lint 2024-04-19 20:42:48 -07:00
tests Touch up PR 41 2023-12-08 17:25:29 -08:00
.gitignore itoa::write 2016-06-25 14:32:23 -07:00
Cargo.toml Release 1.0.11 2024-03-25 23:00:42 -07:00
LICENSE-APACHE Sync license text with rust-lang repos 2022-12-30 12:00:48 -08:00
LICENSE-MIT Remove unnecessary copyright notice in MIT license 2018-07-05 13:39:29 -07:00
README.md Update build status badge 2022-12-15 17:52:40 -08:00
performance.png Adjust chart margins and background for dark themes 2021-12-12 00:23:32 -08:00

README.md

itoa

github crates.io docs.rs build status

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)

performance


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.