<!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="Bidi information of the text."><title>BidiInfo in unicode_bidi - 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_bidi"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="alternate icon"type="image/png"href="../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc struct"><!--[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></nav><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../unicode_bidi/index.html">unicode_bidi</a><spanclass="version">0.3.15</span></h2></div><h2class="location"><ahref="#">BidiInfo</a></h2><divclass="sidebar-elems"><section><h3><ahref="#fields">Fields</a></h3><ulclass="block structfield"><li><ahref="#structfield.levels">levels</a></li><li><ahref="#structfield.original_classes">original_classes</a></li><li><ahref="#structfield.paragraphs">paragraphs</a></li><li><ahref="#structfield.text">text</a></li></ul><h3><ahref="#implementations">Methods</a></h3><ulclass="block method"><li><ahref="#method.has_rtl">has_rtl</a></li><li><ahref="#method.new">new</a></li><li><ahref="#method.new_with_data_source">new_with_data_source</a></li><li><ahref="#method.reorder_line">reorder_line</a></li><li><ahref="#method.reorder_visual">reorder_visual</a></li><li><ahref="#method.reordered_levels">reordered_levels</a></li><li><ahref="#method.reordered_levels_per_char">reordered_levels_per_char</a></li><li><ahref="#method.visual_runs">visual_runs</a></li></ul><h3><ahref="#trait-implementations">Trait Implementations</a></h3><ulclass="block trait-implementation"><li><ahref="#impl-Debug-for-BidiInfo%3C'text%3E">Debug</a></li><li><ahref="#impl-PartialEq-for-BidiInfo%3C'text%3E">PartialEq</a></li><li><ahref="#impl-StructuralPartialEq-for-BidiInfo%3C'text%3E">StructuralPartialEq</a></li></ul><h3><ahref="#synthetic-implementations">Auto Trait Implementations</a></h3><ulclass="block synthetic-implementation"><li><ahref="#impl-Freeze-for-BidiInfo%3C'text%3E">Freeze</a></li><li><ahref="#impl-RefUnwindSafe-for-BidiInfo%3C'text%3E">RefUnwindSafe</a></li><li><ahref="#impl-Send-for-BidiInfo%3C'text%3E">Send</a></li><li><ahref="#impl-Sync-for-BidiInfo%3C'text%3E">Sync</a></li><li><ahref="#impl-Unpin-for-BidiInfo%3C'text%3E">Unpin</a></li><li><ahref="#impl-UnwindSafe-for-BidiInfo%3C'text%3E">UnwindSafe</a></li></ul><h3><ahref="#blanket-implementations">Blanket Implementations</a></h3><ulclass="block blanket-implementation"><li><ahref="#impl-Any-for-T">Any</a></li><li><ahref="#impl-Borrow%3CT%3E-for-T">Borr
}</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>Bidi information of the text.</p>
<p>The <code>original_classes</code> and <code>levels</code> vectors are indexed by byte offsets into the text. If a
character is multiple bytes wide, then its class and level will appear multiple times in these
</div><spanid="structfield.original_classes"class="structfield section-header"><ahref="#structfield.original_classes"class="anchor field">§</a><code>original_classes: <aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="enum"href="enum.BidiClass.html"title="enum unicode_bidi::BidiClass">BidiClass</a>></code></span><divclass="docblock"><p>The BidiClass of the character at each byte in the text.</p>
</div><spanid="structfield.levels"class="structfield section-header"><ahref="#structfield.levels"class="anchor field">§</a><code>levels: <aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="struct"href="level/struct.Level.html"title="struct unicode_bidi::level::Level">Level</a>></code></span><divclass="docblock"><p>The directional embedding level of each byte in the text.</p>
</div><spanid="structfield.paragraphs"class="structfield section-header"><ahref="#structfield.paragraphs"class="anchor field">§</a><code>paragraphs: <aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="struct"href="struct.ParagraphInfo.html"title="struct unicode_bidi::ParagraphInfo">ParagraphInfo</a>></code></span><divclass="docblock"><p>The boundaries and paragraph embedding level of each paragraph within the text.</p>
</div><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-BidiInfo%3C'text%3E"class="impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#447-660">source</a><ahref="#impl-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.new"class="method"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#460-462">source</a><h4class="code-header">pub fn <ahref="#method.new"class="fn">new</a>(text: &<aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.str.html">str</a>, default_para_level: <aclass="enum"href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="level/struct.Level.html"title="struct unicode_bidi::level::Level">Level</a>>) -><aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'_></h4></section></summary><divclass="docblock"><p>Split the text into paragraphs and determine the bidi embedding levels for each paragraph.</p>
) -><aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'a></h4></section></summary><divclass="docblock"><p>Split the text into paragraphs and determine the bidi embedding levels for each paragraph, with a custom <ahref="data_source/trait.BidiDataSource.html"title="trait unicode_bidi::data_source::BidiDataSource"><code>BidiDataSource</code></a>
for Bidi data. If you just wish to use the hardcoded Bidi data, please use <ahref="struct.BidiInfo.html#method.new"title="associated function unicode_bidi::BidiInfo::new"><code>BidiInfo::new()</code></a>
instead (enabled with tbe default <code>hardcoded-data</code> Cargo feature).</p>
<p>TODO: In early steps, check for special cases that allow later steps to be skipped. like
text that is entirely LTR. See the <code>nsBidi</code> class from Gecko for comparison.</p>
) -><aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="struct"href="level/struct.Level.html"title="struct unicode_bidi::level::Level">Level</a>></h4></section></summary><divclass="docblock"><p>Produce the levels for this paragraph as needed for reordering, one level per <em>byte</em>
in the paragraph. The returned vector includes bytes that are not included
in the <code>line</code>, but will not adjust them.</p>
<p>This runs <ahref="https://www.unicode.org/reports/tr9/#L1">Rule L1</a>, you can run
<ahref="https://www.unicode.org/reports/tr9/#L2">Rule L2</a> by calling <ahref="struct.BidiInfo.html#method.reorder_visual"title="associated function unicode_bidi::BidiInfo::reorder_visual"><code>Self::reorder_visual()</code></a>.
If doing so, you may prefer to use <ahref="struct.BidiInfo.html#method.reordered_levels_per_char"title="method unicode_bidi::BidiInfo::reordered_levels_per_char"><code>Self::reordered_levels_per_char()</code></a> instead
to avoid non-byte indices.</p>
<p>For an all-in-one reordering solution, consider using <ahref="struct.BidiInfo.html#method.reorder_visual"title="associated function unicode_bidi::BidiInfo::reorder_visual"><code>Self::reorder_visual()</code></a>.</p>
) -><aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="struct"href="level/struct.Level.html"title="struct unicode_bidi::level::Level">Level</a>></h4></section></summary><divclass="docblock"><p>Produce the levels for this paragraph as needed for reordering, one level per <em>character</em>
in the paragraph. The returned vector includes characters that are not included
in the <code>line</code>, but will not adjust them.</p>
<p>This runs <ahref="https://www.unicode.org/reports/tr9/#L1">Rule L1</a>, you can run
<ahref="https://www.unicode.org/reports/tr9/#L2">Rule L2</a> by calling <ahref="struct.BidiInfo.html#method.reorder_visual"title="associated function unicode_bidi::BidiInfo::reorder_visual"><code>Self::reorder_visual()</code></a>.
If doing so, you may prefer to use <ahref="struct.BidiInfo.html#method.reordered_levels_per_char"title="method unicode_bidi::BidiInfo::reordered_levels_per_char"><code>Self::reordered_levels_per_char()</code></a> instead
to avoid non-byte indices.</p>
<p>For an all-in-one reordering solution, consider using <ahref="struct.BidiInfo.html#method.reorder_visual"title="associated function unicode_bidi::BidiInfo::reorder_visual"><code>Self::reorder_visual()</code></a>.</p>
) -><aclass="enum"href="https://doc.rust-lang.org/1.80.0/alloc/borrow/enum.Cow.html"title="enum alloc::borrow::Cow">Cow</a><'text, <aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.str.html">str</a>></h4></section></summary><divclass="docblock"><p>Re-order a line based on resolved levels and return the line in display order.</p>
<p>This does not apply <ahref="https://www.unicode.org/reports/tr9/#L3">Rule L3</a> or <ahref="https://www.unicode.org/reports/tr9/#L4">Rule L4</a> around combining characters or mirroring.</p>
) -> (<aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="struct"href="level/struct.Level.html"title="struct unicode_bidi::level::Level">Level</a>>, <aclass="struct"href="https://doc.rust-lang.org/1.80.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="type.LevelRun.html"title="type unicode_bidi::LevelRun">LevelRun</a>>)</h4></section></summary><divclass="docblock"><p>Find the level runs within a line and return them in visual order.</p>
<p><code>line</code> is a range of bytes indices within <code>levels</code>.</p>
<p>The first return value is a vector of levels used by the reordering algorithm,
i.e. the result of <ahref="https://www.unicode.org/reports/tr9/#L1">Rule L1</a>. The second return value is a vector of level runs,
the result of <ahref="https://www.unicode.org/reports/tr9/#L2">Rule L2</a>, showing the visual order that each level run (a run of text with the
same level) should be displayed. Within each run, the display order can be checked
against the Level vector.</p>
<p>This does not handle <ahref="https://www.unicode.org/reports/tr9/#L3">Rule L3</a> (combining characters) or <ahref="https://www.unicode.org/reports/tr9/#L4">Rule L4</a> (mirroring),
as that should be handled by the engine using this API.</p>
<p>Conceptually, this is the same as running <ahref="struct.BidiInfo.html#method.reordered_levels"title="method unicode_bidi::BidiInfo::reordered_levels"><code>Self::reordered_levels()</code></a> followed by
<ahref="struct.BidiInfo.html#method.reorder_visual"title="associated function unicode_bidi::BidiInfo::reorder_visual"><code>Self::reorder_visual()</code></a>, however it returns the result as a list of level runs instead
of producing a level map, since one may wish to deal with the fact that this is operating on
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.has_rtl"class="method"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#657-659">source</a><h4class="code-header">pub fn <ahref="#method.has_rtl"class="fn">has_rtl</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>If processed text has any computed RTL levels</p>
</div></details></div></details></div><h2id="trait-implementations"class="section-header">Trait Implementations<ahref="#trait-implementations"class="anchor">§</a></h2><divid="trait-implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Debug-for-BidiInfo%3C'text%3E"class="impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#429">source</a><ahref="#impl-Debug-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/fmt/trait.Debug.html"title="trait core::fmt::Debug">Debug</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.fmt"class="method trait-impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#429">source</a><ahref="#method.fmt"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/fmt/trait.Debug.html#tymethod.fmt"class="fn">fmt</a>(&self, f: &mut <aclass="struct"href="https://doc.rust-lang.org/1.80.0/core/fmt/struct.Formatter.html"title="struct core::fmt::Formatter">Formatter</a><'_>) -><aclass="type"href="https://doc.rust-lang.org/1.80.0/core/fmt/type.Result.html"title="type core::fmt::Result">Result</a></h4></section></summary><divclass='docblock'>Formats the value using the given formatter. <ahref="https://doc.rust-lang.org/1.80.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-PartialEq-for-BidiInfo%3C'text%3E"class="impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#429">source</a><ahref="#impl-PartialEq-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/cmp/trait.PartialEq.html"title="trait core::cmp::PartialEq">PartialEq</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.eq"class="method trait-impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#429">source</a><ahref="#method.eq"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/cmp/trait.PartialEq.html#tymethod.eq"class="fn">eq</a>(&self, other: &<aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text>) -><aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><divclass='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
by <code>==</code>.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.ne"class="method trait-impl"><spanclass="rightside"><spanclass="since"title="Stable since Rust version 1.0.0">1.0.0</span> · <aclass="src"href="https://doc.rust-lang.org/1.80.0/src/core/cmp.rs.html#263">source</a></span><ahref="#method.ne"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/cmp/trait.PartialEq.html#method.ne"class="fn">ne</a>(&self, other: <aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&Rhs</a>) -><aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><divclass='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
sufficient, and should not be overridden without very good reason.</div></details></div></details><sectionid="impl-StructuralPartialEq-for-BidiInfo%3C'text%3E"class="impl"><aclass="src rightside"href="../src/unicode_bidi/lib.rs.html#429">source</a><ahref="#impl-StructuralPartialEq-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.StructuralPartialEq.html"title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section></div><h2id="synthetic-implementations"class="section-header">Auto Trait Implementations<ahref="#synthetic-implementations"class="anchor">§</a></h2><divid="synthetic-implementations-list"><sectionid="impl-Freeze-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-Freeze-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Freeze.html"title="trait core::marker::Freeze">Freeze</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section><sectionid="impl-RefUnwindSafe-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-RefUnwindSafe-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/panic/unwind_safe/trait.RefUnwindSafe.html"title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section><sectionid="impl-Send-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-Send-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Send.html"title="trait core::marker::Send">Send</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section><sectionid="impl-Sync-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-Sync-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sync.html"title="trait core::marker::Sync">Sync</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section><sectionid="impl-Unpin-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-Unpin-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Unpin.html"title="trait core::marker::Unpin">Unpin</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section><sectionid="impl-UnwindSafe-for-BidiInfo%3C'text%3E"class="impl"><ahref="#impl-UnwindSafe-for-BidiInfo%3C'text%3E"class="anchor">§</a><h3class="code-header">impl<'text><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/panic/unwind_safe/trait.UnwindSafe.html"title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <aclass="struct"href="struct.BidiInfo.html"title="struct unicode_bidi::BidiInfo">BidiInfo</a><'text></h3></section></div><h2id="blanket-implementations"class="section-header">Blanket Implementations<ahref="#blanket-implementations"class="anchor">§</a></h2><divid="blanket-implementations-list"><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Any-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/any.rs.html#140">source</a><ahref="#impl-Any-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html"
T: 'static + ?<aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.type_id"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/any.rs.html#141">source</a><ahref="#method.type_id"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html#tymethod.type_id"class="fn">type_id</a>(&self) -><aclass="struct"href="https://doc.rust-lang.org/1.80.0/core/any/struct.TypeId.html"title="struct core::any::TypeId">TypeId</a></h4></section></summary><divclass='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <ahref="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Borrow%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/borrow.rs.html#208">source</a><ahref="#impl-Borrow%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/borrow/trait.Borrow.html"title="trait core::borrow::Borrow">Borrow</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/borrow.rs.html#210">source</a><ahref="#method.borrow"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/borrow/trait.Borrow.html#tymethod.borrow"class="fn">borrow</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&T</a></h4></section></summary><divclass='docblock'>Immutably borrows from an owned value. <ahref="https://doc.rust-lang.org/1.80.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-BorrowMut%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/borrow.rs.html#216">source</a><ahref="#impl-BorrowMut%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/borrow/trait.BorrowMut.html"title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow_mut"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/borrow.rs.html#217">source</a><ahref="#method.borrow_mut"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut"class="fn">borrow_mut</a>(&mut self) -><aclass="primitive"href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&mut T</a></h4></section></summary><divclass='docblock'>Mutably borrows from an owned value. <ahref="https://doc.rust-lang.org/1.80.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-From%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#765">source</a><ahref="#impl-From%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for T</h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#768">source</a><ahref="#method.from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.From.html#tymethod.from"class="fn">from</a>(t: T) -> T</h4></section></summary><divclass="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Into%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#748-750">source</a><ahref="#impl-Into%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><U> for T<divclass="where">where
<code><ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryFrom%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#805-807">source</a><ahref="#impl-TryFrom%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error"class="associatedtype trait-impl"><ahref="#associatedtype.Error"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html#associatedtype.Error"class="associatedtype">Error</a> = <aclass="enum"href="https://doc.rust-lang.org/1.80.0/core/convert/enum.Infallible.html"title="enum core::convert::Infallible">Infallible</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#812">source</a><ahref="#method.try_from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html#tymethod.try_from"class="fn">try_from</a>(value: U) -><aclass="enum"href="https://doc.rust-lang.org/1.80.0/core/result/enum.Result.html"title="enum core::result::Result">Result</a><T, <T as <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryInto%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#790-792">source</a><ahref="#impl-TryInto%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryInto.html"title="trait core::convert::TryInto">TryInto</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error-1"class="associatedtype trait-impl"><ahref="#associatedtype.Error-1"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryInto.html#associatedtype.Error"class="associatedtype">Error</a> = <U as <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.80.0/src/core/convert/mod.rs.html#797">source</a><ahref="#method.try_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryInto.html#tymethod.try_into"class="fn">try_into</a>(self) -><aclass="enum"href="https://doc.rust-lang.org/1.80.0/core/result/enum.Result.html"title="enum core::result::Result">Result</a><U, <U as <aclass="trait"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.80.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>