v0.2.0
Breaking release with correctness fixes, faster lookups, and new feature flags.
Breaking changes
QuoteTagis nowQuoteStyle; tag codes useNonZeroU8with unifiedtag/from_tagnaming, so a reserved-zero tag is unrepresentable.IdentStr::from_rawandKey::from_raware nowfrom_unquoted.Quotedelimiter conversions return the newInvalidQuoteerror instead of().- The Turkic policies moved behind the new
unicode-turkicfeature (previously part ofunicode). - Malformed quoted sources whose body is a single unescaped closing delimiter (for example
"""or[]]) are now kept as raw text instead of parsing as quoted. - Short
Box<str>inputs toKeyare stored inline instead of reusing the allocation.
Fixed
- ASCII hashing now issues identically chunked writes for policy-equal text, so
HashMaps built on chunk-sensitive hashers (FxHash, aHash) can no longer miss lookups for identifiers longer than 64 bytes.
Added
KeyStr: borrowed lookup text for allocation-freeHashMap/BTreeMapqueries, withBorrow/ToOwnedwiring toKey.policy::Exact: byte-exact, case-sensitive matching.Key::from_source::<Q>for custom quote styles, and inline (SSO) storage for short keys.serdefeature:IdentStrround-trips its quoted source form;Keyserializes its lookup text.PartialOrdagainststr,&str, andStringforIdentStrandKey.- Doctests across the public API, a Miri CI job, and static auto-trait assertions.
Performance
- Unicode policies gain byte-equality fast paths and normalize keys directly from borrowed input.
- Turkic folding keeps borrowed case-fold results and skips normalization of already-NFC input.
Stringinputs spill toArc/Rcstorage with a single copy.
docs.rs now builds with all features and per-feature badges.