Expand description
§Fast &[u8]
to integer parser
SIMD (fast) parsing is supported on x86_64 (SSE4.1, AVX2) and on Arm64 (aarch64, Neon), but this library works even if you don’t have a SIMD supported cpu (and it will be still faster than str::parse).
Supports negative values and validates the input.
Supported output types: u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize, isize.
Has good test coverage, and can be considered safe.
To enable SIMD it needs the target-feature
or target-cpu
flags set, or it will fallback to non-SIMD functions.
You can copy the ./.cargo/config.toml
to your project, or use one of the following environment variables:
-
RUSTFLAGS="-C target-feature=+sse2,+sse3,+sse4.1,+ssse3,+avx,+avx2"
for x86_64 -
RUSTFLAGS="-C target-feature=+neon"
for Arm64 -
RUSTFLAGS="-C target-cpu=native"
will optimize for your current cpu
If you have &str
then use .as_bytes()
Supports no_std
with --no-default-features
§Examples
let val: u64 = atoi_simd::parse(b"1234").unwrap();
assert_eq!(val, 1234_u64);
assert_eq!(atoi_simd::parse::<i64>(b"-2345"), Ok(-2345_i64));
assert_eq!(atoi_simd::parse_any::<u64>(b"123something_else"), Ok((123_u64, 3)));
// a drop-in replacement for `str::parse`
assert_eq!(atoi_simd::parse_skipped::<u64>(b"+000000000000000000001234"), Ok(1234_u64));
Enums§
Traits§
- Note: all of the provided methods are
#[inline(always)]
- Note: all of the provided methods are
#[inline(always)]
Functions§
- Parses a slice of digits, and checks the first ‘-’ char for signed integers.
- Parses a slice of digits until it reaches invalid character, and checks the first ‘-’ char for signed integers. Returns the parsed value and the parsed size of the slice.
- Parses a negative integer until it reaches an invalid character. Slice must not contain ‘-’ sign. Returns the parsed value and the parsed size of the slice.
- Parses a positive integer until it reaches an invalid character. Returns the parsed value and the parsed size of the slice.
- Parses a negative integer. Slice must not contain ‘-’ sign.
- Parses a positive integer.
- Parses a slice of digits. Was made to be used as a drop-in replacement for
str::parse
. Checks the first ‘-’ char for signed integers. Skips the ‘+’ char and extra zeroes at the beginning. It’s slower thanparse()
. - parse_until_invalidDeprecated
- parse_until_invalid_negDeprecated
- parse_until_invalid_posDeprecated