Crate varint_simd
source ·Expand description
varint_simd
is a fast SIMD-accelerated variable-length integer
encoder and decoder written in Rust.
For more information, please see the README.
Re-exports§
pub use num::*;
Modules§
Enums§
Functions§
- Decodes a single varint from the input slice.
- decode_
eight_ ⚠u8_ unsafe ssse3
Decodes four adjacent varints into u8’s simultaneously. Requires SSSE3 support. Does not perform overflow checking and may produce incorrect output. - decode_
four_ ⚠unsafe ssse3
Decodes four adjacent varints simultaneously. Target types must fit within 16 bytes when varint encoded. Requires SSSE3 support. - Decodes only the length of a single variant from the input slice.
- Decodes the length of the next integer
- decode_
two_ ⚠unsafe ssse3
Decodes two adjacent varints simultaneously. Target types must fit within 16 bytes when varint encoded. Requires SSSE3 support. - Experimental. May have relatively poor performance. Decode two adjacent varints simultaneously from the input pointer. Requires AVX2. Allows for decoding a pair of
u64
values. For smaller values, the non-wide variation of this function will probably be faster. - Decodes a single varint from the input pointer. Returns a tuple containing the decoded number and the number of bytes read.
- Convenience function for decoding a single varint in ZigZag format from the input slice. See also:
decode
- encode
sse2
Encodes a single number to a varint. Requires SSE2 support. - encode_
to_ slice sse2
Encodes a single number to a varint, and writes the resulting data to the slice. Returns the number of bytes written (maximum 10 bytes). - encode_
unsafe ⚠sse2
Encodes a single number to a varint. Requires SSE2 support. - encode_
zigzag sse2
Convenience function for encoding a single signed integer in ZigZag format to a varint. See also:encode