Crate lexical_util

Crate lexical_util 

Source
Expand description

Shared utilities for lexical conversion routines.

These are not meant to be used publicly for any numeric conversion routines, but provide optimized math routines, format packed struct definitions, and custom iterators for all workspaces.

§Features

  • power-of-two - Add support for parsing and writing power-of-two integer strings.
  • radix - Add support for parsing and writing strings of any radix.
  • format - Add support for custom number formats.
  • write-integers - Add support for writing integers (used for lexical-write-integer).
  • write-floats - Add support for writing floats (used for lexical-write-float).
  • parse-integers - Add support for parsing integers (used for lexical-parse-integer).
  • parse-floats - Add support for parsing floats (used for lexical-write-float).
  • compact - Reduce code size at the cost of performance.
  • f16 - Enable support for half-precision f16 and bf16 floats.
  • std (Default) - Disable to allow use in a no_std environment.

§Public API

lexical-util mainly exists as an implementation detail for the other lexical crates, although its API is mostly stable. If you would like to use a high-level API that writes to and parses from String and str, respectively, please look at lexical instead. If you would like an API that supports multiple numeric conversions without a dependency on alloc, please look at lexical-core instead.

Any undocumented, implementation details may change release-to-release without major or minor version changes. Use internal implementation details at your own risk. Any changes other than to NumberFormatBuilder, NumberFormat, format, and options will not be considered a breaking change.

§Version Support

The minimum, standard, required version is 1.63.0, for const generic support. Older versions of lexical support older Rust versions.

§Safety Guarantees

For a detailed breakdown on the use of unsafe, how and why our traits are implemented safely, and how to verify this, see Safety.

Re-exports§

pub use format::NumberFormat;
pub use format::NumberFormatBuilder;
pub use options::ParseOptions;parse-floats or parse-integers
pub use options::WriteOptions;write-floats or write-integers
pub use result::Result;

Modules§

algorithm
Simple, shared algorithms for slices and iterators.
ascii
Utilities for working with ASCII characters.
bf16f16
Brain Floating Point implementation, a 16-bit type used in machine learning.
digit
Utilities to process digits.
div128Non-compact and (write-floats or write-integers)
Optimized division algorithms for u128.
extended_floatparse-floats or write-floats
Extended precision floating-point type.
f16f16
Half-precision IEEE-754 floating point implementation.
format
The creation and processing of number format packed structs.
iteratorparse-floats or parse-integers
Specialized iterator traits.
mul
Fast multiplication routines.
num
Utilities for Rust numbers.
options
Shared traits for the options API.
result
Result type for numeric parsing functions.
stepparse-floats or parse-integers or write-floats or write-integers
The maximum digits that can be held in a u64 for a given radix without overflowing.

Macros§

from_lexicalparse-floats or parse-integers
Define the FromLexical trait.
from_lexical_with_optionsparse-floats or parse-integers
Define the FromLexicalWithOptions trait.
to_lexicalwrite-floats or write-integers
Define the ToLexical trait.
to_lexical_with_optionswrite-floats or write-integers
Define the ToLexicalWithOptions trait.

Enums§

Error
Error code during parsing, indicating failure type.

Constants§

BUFFER_SIZEwrite-floats or write-integers
Maximum number of bytes required to serialize any number with default options to string.

Traits§

FormattedSizewrite-floats or write-integers
The size, in bytes, of formatted values.