Go to file
David Tolnay 3895493dc3
Ignore cast_sign_loss pedantic clippy lint
warning: casting `i8` to `u32` may lose the sign of the value
       --> src/lib.rs:138:21
        |
    138 |                       self as $conv_fn
        |                       ^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: `-W clippy::cast-sign-loss` implied by `-W clippy::pedantic`
        = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_sign_loss)]`
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i8` to `u32` may lose the sign of the value
       --> src/lib.rs:141:23
        |
    141 |                       (!(self as $conv_fn)).wrapping_add(1)
        |                         ^^^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `u8` may lose the sign of the value
       --> src/lib.rs:181:49
        |
    181 |                           *buf_ptr.offset(curr) = (n as u8) + b'0';
        |                                                   ^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:198:39
        |
    198 |                   let len = buf.len() - curr as usize;
        |                                         ^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i16` to `u32` may lose the sign of the value
       --> src/lib.rs:138:21
        |
    138 |                       self as $conv_fn
        |                       ^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i16` to `u32` may lose the sign of the value
       --> src/lib.rs:141:23
        |
    141 |                       (!(self as $conv_fn)).wrapping_add(1)
        |                         ^^^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i32` to `u32` may lose the sign of the value
       --> src/lib.rs:138:21
        |
    138 |                       self as $conv_fn
        |                       ^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i32` to `u32` may lose the sign of the value
       --> src/lib.rs:141:23
        |
    141 |                       (!(self as $conv_fn)).wrapping_add(1)
        |                         ^^^^^^^^^^^^^^^^^^
    ...
    215 | / impl_Integer!(
    216 | |     I8_MAX_LEN => i8,
    217 | |     U8_MAX_LEN => u8,
    218 | |     I16_MAX_LEN => i16,
    ...   |
    221 | |     U32_MAX_LEN => u32
    222 | |     as u32);
        | |___________- in this macro invocation
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i64` to `u64` may lose the sign of the value
       --> src/lib.rs:138:21
        |
    138 |                     self as $conv_fn
        |                     ^^^^^^^^^^^^^^^^
    ...
    224 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i64` to `u64` may lose the sign of the value
       --> src/lib.rs:141:23
        |
    141 |                     (!(self as $conv_fn)).wrapping_add(1)
        |                       ^^^^^^^^^^^^^^^^^^
    ...
    224 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `u8` may lose the sign of the value
       --> src/lib.rs:181:49
        |
    181 |                         *buf_ptr.offset(curr) = (n as u8) + b'0';
        |                                                 ^^^^^^^^^
    ...
    224 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:198:39
        |
    198 |                 let len = buf.len() - curr as usize;
        |                                       ^^^^^^^^^^^^^
    ...
    224 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `u64` may lose the sign of the value
       --> src/lib.rs:138:21
        |
    138 |                     self as $conv_fn
        |                     ^^^^^^^^^^^^^^^^
    ...
    233 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `u64` may lose the sign of the value
       --> src/lib.rs:141:23
        |
    141 |                     (!(self as $conv_fn)).wrapping_add(1)
        |                       ^^^^^^^^^^^^^^^^^^
    ...
    233 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `u8` may lose the sign of the value
       --> src/lib.rs:181:49
        |
    181 |                         *buf_ptr.offset(curr) = (n as u8) + b'0';
        |                                                 ^^^^^^^^^
    ...
    233 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:198:39
        |
    198 |                 let len = buf.len() - curr as usize;
        |                                       ^^^^^^^^^^^^^
    ...
    233 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i128` to `u128` may lose the sign of the value
       --> src/lib.rs:248:21
        |
    248 |                     self as u128
        |                     ^^^^^^^^^^^^
    ...
    309 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `i128` to `u128` may lose the sign of the value
       --> src/lib.rs:251:23
        |
    251 |                     (!(self as u128)).wrapping_add(1)
        |                       ^^^^^^^^^^^^^^
    ...
    309 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:265:72
        |
    265 |                         ptr::write_bytes(buf_ptr.offset(target), b'0', (curr - target) as usize);
        |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    309 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:278:76
        |
    278 |                             ptr::write_bytes(buf_ptr.offset(target), b'0', (curr - target) as usize);
        |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    309 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info)

    warning: casting `isize` to `usize` may lose the sign of the value
       --> src/lib.rs:298:39
        |
    298 |                 let len = buf.len() - curr as usize;
        |                                       ^^^^^^^^^^^^^
    ...
    309 | 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_sign_loss
        = note: this warning originates in the macro `impl_Integer128` (in Nightly builds, run with -Z macro-backtrace for more info)
2024-04-19 20:41:43 -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_sign_loss pedantic clippy lint 2024-04-19 20:41:43 -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.