Expand description
OI4 / DIN SPEC 91406 Digital Nameplate (DNP) encoding / decoding / validation.
Features:
- std (default): Enables std::error::Error integration; implies
alloc. - alloc: Provides heap-backed APIs (e.g.
encode-> String,decode). - strict: Enforces uppercase hex escapes and forbids unescaped reserved ASCII.
Encoding rules summary:
- Unreserved characters (ALPHA / DIGIT / ‘-’ / ‘.’ / ‘_’ / ‘~’) stay literal.
- Every other ASCII byte (including the comma itself) MUST be represented as
,XX(uppercase hex) when produced by the encoder. - Non-ASCII Unicode stays verbatim (its UTF-8 bytes are not individually re-escaped), unless future spec revisions say otherwise.
- Decoder (default mode) accepts lowercase hex in escape triplets; encoder always outputs uppercase.
- Strict mode tightens validation (see feature
strict).
No panics on valid usage; no unsafe in production code.
use oi4_dnp_encoding::encode;
let s = "Hello World!"; // space & exclamation must be escaped
let enc = encode(s);
assert_eq!(enc, "Hello,20World,21");Re-exports§
pub use crate::decode::decode;pub use crate::encode::encode;pub use crate::encode::encode_into;pub use crate::encode::encoded_len;pub use crate::validate::validate_dnp;pub use crate::validate::Rules;