pub struct StrictDeterministicConfig {
pub reject_unsorted_fields: bool,
pub require_type_hints: bool,
pub canonical_boolean: bool,
pub canonical_string: bool,
pub min_binary_version: u8,
pub validate_binary_ordering: bool,
}Expand description
Configuration for strict deterministic behavior
Controls validation and canonicalization requirements for parsing and encoding LNMP data.
Fields§
§reject_unsorted_fields: boolReject records with unsorted fields
When true, parsing will fail if fields are not in ascending FID order.
require_type_hints: boolRequire type hints on all fields
When true, parsing will fail if any field lacks a type hint.
canonical_boolean: boolEnforce canonical boolean representation (0/1 only)
When true, parsing will fail for non-canonical boolean values
(e.g., “true”, “false”, “yes”, “no”).
canonical_string: boolEnforce canonical string normalization
When true, strings are normalized (trimmed, case-folded if configured).
min_binary_version: u8Minimum binary format version
Reject binary data with version lower than this.
- 0x04: v0.4 (no nested structures)
- 0x05: v0.5 (nested structures supported)
validate_binary_ordering: boolValidate field ordering in binary format
When true, binary decoder validates that fields are in ascending FID order.
Implementations§
Source§impl StrictDeterministicConfig
impl StrictDeterministicConfig
Sourcepub fn strict() -> Self
pub fn strict() -> Self
Creates config for strict deterministic mode (v0.5-D)
Maximum strictness for LLM drift prevention:
- All validations enabled
- Type hints required
- Canonical forms enforced
- Minimum binary version 0x05
§Example
use lnmp_core::profile::StrictDeterministicConfig;
let config = StrictDeterministicConfig::strict();
assert!(config.reject_unsorted_fields);
assert!(config.require_type_hints);
assert!(config.canonical_boolean);
assert_eq!(config.min_binary_version, 0x05);Sourcepub fn standard() -> Self
pub fn standard() -> Self
Creates config for standard mode
Balanced approach:
- Canonical output but accepts non-canonical input
- Type hints optional
- Binary v0.4 compatible
§Example
use lnmp_core::profile::StrictDeterministicConfig;
let config = StrictDeterministicConfig::standard();
assert!(!config.reject_unsorted_fields);
assert!(!config.require_type_hints);
assert!(config.canonical_boolean); // Still normalize outputSourcepub fn loose() -> Self
pub fn loose() -> Self
Creates config for loose mode
Maximum backward compatibility:
- All validations disabled
- Accepts any input
§Example
use lnmp_core::profile::StrictDeterministicConfig;
let config = StrictDeterministicConfig::loose();
assert!(!config.reject_unsorted_fields);
assert!(!config.require_type_hints);
assert!(!config.canonical_boolean);Sourcepub fn profile(&self) -> LnmpProfile
pub fn profile(&self) -> LnmpProfile
Returns the recommended profile for this config
Trait Implementations§
Source§impl Clone for StrictDeterministicConfig
impl Clone for StrictDeterministicConfig
Source§fn clone(&self) -> StrictDeterministicConfig
fn clone(&self) -> StrictDeterministicConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more