Expand description
RG (Registro Geral) - per-UF identity card validation, formatting and generation.
RG is issued independently by each Brazilian state and there is no single national algorithm. Only SP has a widely-adopted, documented mod-11 check digit algorithm — implemented here in full. For every other UF this module performs structural validation only (length range + digit charset) and treats the input as opaque digits.
§SP algorithm
8-digit body d1..d8. Weights 9,8,7,6,5,4,3,2 applied left-to-right.
sum = Σ d_i * w_i. Check digit = sum mod 11; remainder
10 is rendered as the ASCII character 'X'. Canonical formatted form is
XX.XXX.XXX-X.
§Other UFs
is_valid/is_valid_strict only enforce length (5..=14 digits). Generation
returns RgError::UnsupportedUfForGeneration. Promote a UF from structural
to full validation by extending uf_spec once an authoritative algorithm
is verified.
Structs§
- Rg
- A validated RG stored as ASCII bytes (digits, plus optional trailing
'X'for SP), tagged with its issuing UF.
Enums§
Functions§
- compute_
check_ digit - SP-only: compute the check digit for an 8-digit base. Returns
Some(0..=9)orSome(10)(caller renders as'X');Nonefor non-SP or wrong length. - format_
rg - Insert per-UF separators. Returns
Noneif the input length doesn’t match the UF body length (or, for variable-length UFs, the structural range). - generate
- Generate a random valid RG. SP only; other UFs return
RgError::UnsupportedUfForGeneration. - generate_
with_ rng - Generate a valid RG using an injected random source.
- generate_
with_ seed - Generate a deterministic valid RG from a seed.
- is_
valid - Compatibility alias for
is_valid_lenient. - is_
valid_ lenient - Lenient validation - strips symbols, then checks length and (for SP) the check digit.
- is_
valid_ strict - Strict validation - input must be either the canonical formatted mask or the unformatted body. No leading/trailing whitespace, no extra symbols.
- normalize
- Normalizes a permissive RG input. For SP, preserves
Xcase-insensitively; for other UFs, retains only ASCII digits. - parse_
strict - Parse a raw RG string into a validated
Rg. - remove_
symbols - Compatibility alias for
normalize.