<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="Methods for iterating over strings while applying Unicode normalizations as described in Unicode Standard Annex #15."><title>UnicodeNormalization in unicode_normalization - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><linkrel="stylesheet"href="../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../static.files/rustdoc-dd39b87e5fcfba68.css"><metaname="rustdoc-vars"data-root-path="../"data-static-root-path="../static.files/"data-current-crate="unicode_normalization"data-themes=""data-resource-suffix=""data-rustdoc-version="1.80.0 (051478957 2024-07-21)"data-channel="1.80.0"data-search-js="search-d52510db62a78183.js"data-settings-js="settings-4313503d2e1961c2.js"><scriptsrc="../static.files/storage-118b08c4c78b968e.js"></script><scriptdefersrc="sidebar-items.js"></script><scriptdefersrc="../static.files/main-20a3ad099b048cf2.js"></script><noscript><linkrel="stylesheet"href="../static.files/noscript-df360f571f6edeae.css"></noscript><linkrel="icon"href="https://unicode-rs.github.io/unicode-rs_sm.png"></head><bodyclass="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle"title="show sidebar"></button><aclass="logo-container"href="../unicode_normalization/index.html"><imgsrc="https://unicode-rs.github.io/unicode-rs_sm.png"alt=""></a></nav><navclass="sidebar"><divclass="sidebar-crate"><aclass="logo-container"href="../unicode_normalization/index.html"><imgsrc="https://unicode-rs.github.io/unicode-rs_sm.png"alt="logo"></a><h2><ahref="../unicode_normalization/index.html">unicode_normalization</a><spanclass="version">0.1.23</span></h2></div><h2class="location"><ahref="#">UnicodeNormalization</a></h2><divclass="sidebar-elems"><section><h3><ahref="#required-methods">Required Methods</a></h3><ulclass="block"><li><ahref="#tymethod.cjk_compat_variants">cjk_compat_variants</a></li><li><ahref="#tymethod.nfc">nfc</a></li><li><ahref="#tymethod.nfd">nfd</a></li><li><ahref="#tymethod.nfkc">nfkc</a></li><li><ahref="#tymethod.nfkd">nfkd</a></li><li><ahref="#tymethod.stream_safe">stream_safe</a></li></ul><h3><ahref="#foreign-impls">Implementations on Foreign Types</a></h3><ulclass="block"><li><ahref="#impl-UnicodeNormalization%3CChars%3C'a%3E%3E-for-%26str">&'a str</a></li><li><ahref="#impl-UnicodeNormalization%3CIntoIter%3Cchar%3E%3E-for-char">char</a></li></ul><h3><ahref="#implementors">Implementors</a></h3></section><h2><ahref="index.html">In crate unicode_normalization</a></h2></div></nav><divclass="sidebar-resizer"></div><main><divclass="width-limiter"><rustdoc-search></rustdoc-search><sectionid="main-content"class="content"><divclass="main-heading"><h1>Trait <ahref="index.html">unicode_normalization</a>::<wbr><aclass="trait"href="#">UnicodeNormalization</a><buttonid="copy-path"title="Copy item path to clipboard">Copy item path</button></h1><spanclass="out-of-band"><aclass="src"href="../src/unicode_normalization/lib.rs.html#106-138">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><preclass="rust item-decl"><code>pub trait UnicodeNormalization<I: <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/iter/traits/iterator/trait.Iterator.html"title="trait core::iter::traits::iterator::Iterator">Iterator</a>&l
}</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>Methods for iterating over strings while applying Unicode normalizations
as described in
<ahref="http://www.unicode.org/reports/tr15/">Unicode Standard Annex #15</a>.</p>
</div></details><h2id="required-methods"class="section-header">Required Methods<ahref="#required-methods"class="anchor">§</a></h2><divclass="methods"><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.nfd"class="method"><aclass="src rightside"href="../src/unicode_normalization/lib.rs.html#109">source</a><h4class="code-header">fn <ahref="#tymethod.nfd"class="fn">nfd</a>(self) -><aclass="struct"href="struct.Decompositions.html"title="struct unicode_normalization::Decompositions">Decompositions</a><I><ahref="#"class="tooltip"data-notable-ty="Decompositions<I>">ⓘ</a></h4></section></summary><divclass="docblock"><p>Returns an iterator over the string in Unicode Normalization Form D
(canonical decomposition).</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.nfkd"class="method"><aclass="src rightside"href="../src/unicode_normalization/lib.rs.html#113">source</a><h4class="code-header">fn <ahref="#tymethod.nfkd"class="fn">nfkd</a>(self) -><aclass="struct"href="struct.Decompositions.html"title="struct unicode_normalization::Decompositions">Decompositions</a><I><ahref="#"class="tooltip"data-notable-ty="Decompositions<I>">ⓘ</a></h4></section></summary><divclass="docblock"><p>Returns an iterator over the string in Unicode Normalization Form KD
(compatibility decomposition).</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.nfc"class="method"><aclass="src rightside"href="../src/unicode_normalization/lib.rs.html#117">source</a><h4class="code-header">fn <ahref="#tymethod.nfc"class="fn">nfc</a>(self) -><aclass="struct"href="struct.Recompositions.html"title="struct unicode_normalization::Recompositions">Recompositions</a><I><ahref="#"class="tooltip"data-notable-ty="Recompositions<I>">ⓘ</a></h4></section></summary><divclass="docblock"><p>An Iterator over the string in Unicode Normalization Form C
(canonical decomposition followed by canonical composition).</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.nfkc"class="method"><aclass="src rightside"href="../src/unicode_normalization/lib.rs.html#121">source</a><h4class="code-header">fn <ahref="#tymethod.nfkc"class="fn">nfkc</a>(self) -><aclass="struct"href="struct.Recompositions.html"title="struct unicode_normalization::Recompositions">Recompositions</a><I><ahref="#"class="tooltip"data-notable-ty="Recompositions<I>">ⓘ</a></h4></section></summary><divclass="docblock"><p>An Iterator over the string in Unicode Normalization Form KC
(compatibility decomposition followed by canonical composition).</p>
with normal forms using Standardized Variation Sequences. This is not
part of the canonical or compatibility decomposition algorithms, but
performing it before those algorithms produces normalized output which
better preserves the intent of the original text.</p>
<p>Note that many systems today ignore variation selectors, so these
may not immediately help text display as intended, but they at
least preserve the information in a standardized form, giving
implementations the option to recognize them.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.stream_safe"class="method"><aclass="src rightside"href="../src/unicode_normalization/lib.rs.html#137">source</a><h4class="code-header">fn <ahref="#tymethod.stream_safe"class="fn">stream_safe</a>(self) -><aclass="struct"href="struct.StreamSafe.html"title="struct unicode_normalization::StreamSafe">StreamSafe</a><I><ahref="#"class="tooltip"data-notable-ty="StreamSafe<I>">ⓘ</a></h4></section></summary><divclass="docblock"><p>An Iterator over the string with Conjoining Grapheme Joiner characters
inserted according to the Stream-Safe Text Process (UAX15-D4)</p>