34 lines
17 KiB
HTML
34 lines
17 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `AsMut` trait in crate `nom`."><meta name="keywords" content="rust, rustlang, rust-lang, AsMut"><title>nom::lib::std::convert::AsMut - Rust</title><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script src="../../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../../../../nom/index.html'><div class='logo-container'><img src='../../../../rust-logo.png' alt='logo'></div></a><p class='location'>Trait AsMut</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.as_mut">as_mut</a></div><a class="sidebar-title" href="#foreign-impls">Implementations on Foreign Types</a><div class="sidebar-links"><a href="#impl-AsMut%3C%5BT%5D%3E-for-%5BT%3B%20N%5D">[T; N]</a><a href="#impl-AsMut%3C%5BT%5D%3E-for-%5BT%5D">[T]</a><a href="#impl-AsMut%3CU%3E-for-%26%27_%20mut%20T">&'_ mut T</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='../../../index.html'>nom</a>::<wbr><a href='../../index.html'>lib</a>::<wbr><a href='../index.html'>std</a>::<wbr><a href='index.html'>convert</a></p><script>window.sidebarCurrent = {name: 'AsMut', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><a id="settings-menu" href="../../../../settings.html"><img src="../../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>−</span>]</a></span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#207-211' title='goto source code'>[src]</a></span><span class='in-band'>Trait <a href='../../../index.html'>nom</a>::<wbr><a href='../../index.html'>lib</a>::<wbr><a href='../index.html'>std</a>::<wbr><a href='index.html'>convert</a>::<wbr><a class="trait" href=''>AsMut</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust trait'>pub trait AsMut<T> <span class="where fmt-newline">where<br> T: ?<a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.Sized.html" title="trait nom::lib::std::prelude::v1::v1::Sized">Sized</a>, </span>{
|
||
fn <a href='#tymethod.as_mut' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T;
|
||
}</pre></div><div class='docblock'><p>Used to do a cheap mutable-to-mutable reference conversion.</p>
|
||
<p>This trait is similar to [<code>AsRef</code>] but used for converting between mutable
|
||
references. If you need to do a costly conversion it is better to
|
||
implement [<code>From</code>] with type <code>&mut T</code> or write a custom function.</p>
|
||
<p><strong>Note: This trait must not fail</strong>. If the conversion can fail, use a
|
||
dedicated method which returns an <a href="../../std/option/enum.Option.html"><code>Option<T></code></a> or a <a href="../../std/result/enum.Result.html"><code>Result<T, E></code></a>.</p>
|
||
<h1 id="generic-implementations" class="section-header"><a href="#generic-implementations">Generic Implementations</a></h1>
|
||
<ul>
|
||
<li><code>AsMut</code> auto-dereferences if the inner type is a mutable reference
|
||
(e.g.: <code>foo.as_mut()</code> will work the same if <code>foo</code> has type <code>&mut Foo</code>
|
||
or <code>&mut &mut Foo</code>)</li>
|
||
</ul>
|
||
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
|
||
<p>Using <code>AsMut</code> as trait bound for a generic function we can accept all mutable references
|
||
that can be converted to type <code>&mut T</code>. Because <a href="../../std/boxed/struct.Box.html"><code>Box<T></code></a> implements <code>AsMut<T></code> we can
|
||
write a function <code>add_one</code> that takes all arguments that can be converted to <code>&mut u64</code>.
|
||
Because <a href="../../std/boxed/struct.Box.html"><code>Box<T></code></a> implements <code>AsMut<T></code>, <code>add_one</code> accepts arguments of type
|
||
<code>&mut Box<u64></code> as well:</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">fn</span> <span class="ident">add_one</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">AsMut</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span><span class="op">></span>(<span class="ident">num</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">T</span>) {
|
||
<span class="kw-2">*</span><span class="ident">num</span>.<span class="ident">as_mut</span>() <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
|
||
}
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">boxed_num</span> <span class="op">=</span> <span class="ident">Box</span>::<span class="ident">new</span>(<span class="number">0</span>);
|
||
<span class="ident">add_one</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">boxed_num</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">boxed_num</span>, <span class="number">1</span>);</pre></div>
|
||
</div>
|
||
<h2 id='required-methods' class='small-section-header'>Required methods<a href='#required-methods' class='anchor'></a></h2><div class='methods'><h3 id='tymethod.as_mut' class='method'><code id='as_mut.v'>fn <a href='#tymethod.as_mut' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</code></h3><div class='docblock'><p>Performs the conversion.</p>
|
||
</div></div><span class='loading-content'>Loading content...</span>
|
||
<h2 id='foreign-impls' class='small-section-header'>Implementations on Foreign Types<a href='#foreign-impls' class='anchor'></a></h2><h3 id='impl-AsMut%3CU%3E-for-%26%27_%20mut%20T' class='impl'><code class='in-band'>impl<'_, T, U> <a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.AsMut.html" title="trait nom::lib::std::prelude::v1::v1::AsMut">AsMut</a><U> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'_ mut </a>T <span class="where fmt-newline">where<br> T: <a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.AsMut.html" title="trait nom::lib::std::prelude::v1::v1::AsMut">AsMut</a><U> + ?<a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.Sized.html" title="trait nom::lib::std::prelude::v1::v1::Sized">Sized</a>,<br> U: ?<a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.Sized.html" title="trait nom::lib::std::prelude::v1::v1::Sized">Sized</a>, </span></code><a href='#impl-AsMut%3CU%3E-for-%26%27_%20mut%20T' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#534-541' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut' class="method hidden"><code id='as_mut.v-1'>fn <a href='#method.as_mut' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>U</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#538-540' title='goto source code'>[src]</a></h4></div><h3 id='impl-AsMut%3C%5BT%5D%3E-for-%5BT%3B%20N%5D' class='impl'><code class='in-band'>impl<const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, T> <a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.AsMut.html" title="trait nom::lib::std::prelude::v1::v1::AsMut">AsMut</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; N]</a> <span class="where fmt-newline">where<br> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; N]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/array/trait.LengthAtMost32.html" title="trait core::array::LengthAtMost32">LengthAtMost32</a>, </span></code><a href='#impl-AsMut%3C%5BT%5D%3E-for-%5BT%3B%20N%5D' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/array/mod.rs.html#106-114' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-1' class="method hidden"><code id='as_mut.v-2'>fn <a href='#method.as_mut' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&mut [T]</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/array/mod.rs.html#111-113' title='goto source code'>[src]</a></h4></div><h3 id='impl-AsMut%3C%5BT%5D%3E-for-%5BT%5D' class='impl'><code class='in-band'>impl<T> <a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.AsMut.html" title="trait nom::lib::std::prelude::v1::v1::AsMut">AsMut</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></code><a href='#impl-AsMut%3C%5BT%5D%3E-for-%5BT%5D' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#624-628' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-2' class="method hidden"><code id='as_mut.v-3'>fn <a href='#method.as_mut' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&mut [T]</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#625-627' title='goto source code'>[src]</a></h4></div><span class='loading-content'>Loading content...</span>
|
||
<h2 id='implementors' class='small-section-header'>Implementors<a href='#implementors' class='anchor'></a></h2><div class='item-list' id='implementors-list'><h3 id='impl-AsMut%3Cstr%3E' class='impl'><code class='in-band'>impl AsMut<<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>> for <a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.String.html" title="struct nom::lib::std::prelude::v1::v1::String">String</a></code><a href='#impl-AsMut%3Cstr%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2205-2210' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-3' class="method hidden"><code id='as_mut.v-4'>fn <a href='#method.as_mut-3' class='fnname'>as_mut</a>(&mut self) -> &mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2207-2209' title='goto source code'>[src]</a></h4></div><h3 id='impl-AsMut%3C%5BT%5D%3E' class='impl'><code class='in-band'>impl<T> AsMut<<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a>T<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> for <a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.Vec.html" title="struct nom::lib::std::prelude::v1::v1::Vec">Vec</a><T></code><a href='#impl-AsMut%3C%5BT%5D%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/vec.rs.html#2370-2374' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-4' class="method hidden"><code id='as_mut.v-5'>fn <a href='#method.as_mut-4' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&mut [T]</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/vec.rs.html#2371-2373' title='goto source code'>[src]</a></h4></div><h3 id='impl-AsMut%3CVec%3CT%3E%3E' class='impl'><code class='in-band'>impl<T> AsMut<<a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.Vec.html" title="struct nom::lib::std::prelude::v1::v1::Vec">Vec</a><T>> for <a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.Vec.html" title="struct nom::lib::std::prelude::v1::v1::Vec">Vec</a><T></code><a href='#impl-AsMut%3CVec%3CT%3E%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/vec.rs.html#2356-2360' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-5' class="method hidden"><code id='as_mut.v-6'>fn <a href='#method.as_mut-5' class='fnname'>as_mut</a>(&mut self) -> &mut <a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.Vec.html" title="struct nom::lib::std::prelude::v1::v1::Vec">Vec</a><T></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/vec.rs.html#2357-2359' title='goto source code'>[src]</a></h4></div><h3 id='impl-AsMut%3CT%3E' class='impl'><code class='in-band'>impl<T> AsMut<T> for <a class="struct" href="../../../../nom/lib/std/prelude/v1/v1/struct.Box.html" title="struct nom::lib::std::prelude::v1::v1::Box">Box</a><T> <span class="where fmt-newline">where<br> T: ?<a class="trait" href="../../../../nom/lib/std/prelude/v1/v1/trait.Sized.html" title="trait nom::lib::std::prelude::v1::v1::Sized">Sized</a>, </span></code><a href='#impl-AsMut%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/boxed.rs.html#1077-1081' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.as_mut-6' class="method hidden"><code id='as_mut.v-7'>fn <a href='#method.as_mut-6' class='fnname'>as_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/boxed.rs.html#1078-1080' title='goto source code'>[src]</a></h4></div></div><span class='loading-content'>Loading content...</span><script type="text/javascript" src="../../../../implementors/core/convert/trait.AsMut.js" async></script></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../../";window.currentCrate = "nom";</script><script src="../../../../aliases.js"></script><script src="../../../../main.js"></script><script defer src="../../../../search-index.js"></script></body></html> |