blob: 2bd158561e0d6003130c2c6872a9a4112d1d4253 [file] [log] [blame]
<!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="An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not."><meta name="keywords" content="rust, rustlang, rust-lang, CloneStableDeref"><title>CloneStableDeref in stable_deref_trait - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../stable_deref_trait/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../stable_deref_trait/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">CloneStableDeref</a></h2><div class="sidebar-elems"><section><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-CloneStableDeref-for-%26%27a%20T">&amp;&#39;a T</a></li><li><a href="#impl-CloneStableDeref-for-Arc%3CT%3E">Arc&lt;T&gt;</a></li><li><a href="#impl-CloneStableDeref-for-Rc%3CT%3E">Rc&lt;T&gt;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In stable_deref_trait</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="index.html">stable_deref_trait</a>::<wbr><a class="trait" href="#">CloneStableDeref</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/stable_deref_trait/lib.rs.html#129">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust trait"><code>pub unsafe trait CloneStableDeref: <a class="trait" href="trait.StableDeref.html" title="trait stable_deref_trait::StableDeref">StableDeref</a> + Clone { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not.</p>
<p>Note that a single type should never implement both DerefMut and CloneStableDeref. If it did, this would let you get two mutable references to the same location, by cloning and then calling deref_mut() on both values.</p>
</div></details><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><section id="impl-CloneStableDeref-for-Rc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/stable_deref_trait/lib.rs.html#172">source</a><a href="#impl-CloneStableDeref-for-Rc%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized&gt; <a class="trait" href="trait.CloneStableDeref.html" title="trait stable_deref_trait::CloneStableDeref">CloneStableDeref</a> for Rc&lt;T&gt;</h3></section><section id="impl-CloneStableDeref-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/stable_deref_trait/lib.rs.html#176">source</a><a href="#impl-CloneStableDeref-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized&gt; <a class="trait" href="trait.CloneStableDeref.html" title="trait stable_deref_trait::CloneStableDeref">CloneStableDeref</a> for Arc&lt;T&gt;</h3></section><section id="impl-CloneStableDeref-for-%26%27a%20T" class="impl has-srclink"><a class="srclink rightside" href="../src/stable_deref_trait/lib.rs.html#188">source</a><a href="#impl-CloneStableDeref-for-%26%27a%20T" class="anchor"></a><h3 class="code-header">impl&lt;'a, T:&nbsp;?Sized&gt; <a class="trait" href="trait.CloneStableDeref.html" title="trait stable_deref_trait::CloneStableDeref">CloneStableDeref</a> for &amp;'a T</h3></section><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div id="implementors-list"></div><script src="../implementors/stable_deref_trait/trait.CloneStableDeref.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="stable_deref_trait" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>