Module regex_automata::util::primitives
source · Expand description
Lower level primitive types that are useful in a variety of circumstances.
Overview
This list represents the principle types in this module and briefly describes when you might want to use them.
PatternID
- A type that represents the identifier of a regex pattern. This is probably the most widely used type in this module (which is why it’s also re-exported in the crate root).StateID
- A type the represents the identifier of a finite automaton state. This is used for both NFAs and DFAs, with the notable exception of the hybrid NFA/DFA. (The hybrid NFA/DFA uses a special purpose “lazy” state identifier.)SmallIndex
- The internal representation of both aPatternID
and aStateID
. Its purpose is to serve as a type that can index memory without being as big as ausize
on 64-bit targets. The main idea behind this type is that there are many things in regex engines that will, in practice, never overflow a 32-bit integer. (For example, like the number of patterns in a regex or the number of states in an NFA.) Thus, aSmallIndex
can be used to index memory without pepperingas
casts everywhere. Moreover, it forces callers to handle errors in the case where, somehow, the value would otherwise overflow either a 32-bit integer or ausize
(e.g., on 16-bit targets).NonMaxUsize
- Represents ausize
that cannot beusize::MAX
. As a result,Option<NonMaxUsize>
has the same size in memory as ausize
. This useful, for example, when representing the offsets of submatches since it reduces memory usage by a factor of 2. It is a legal optimization since Rust guarantees that slices never have a length that exceedsisize::MAX
.
Structs
- A
usize
that can never beusize::MAX
. - The identifier of a regex pattern, represented by a
SmallIndex
. - This error occurs when a value could not be constructed.
- A type that represents a “small” index.
- This error occurs when a small index could not be constructed.
- The identifier of a finite automaton state, represented by a
SmallIndex
. - This error occurs when a value could not be constructed.