<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>编程 on 我的博客</title>
		<link>https://blog-go3.pages.dev/tags/%E7%BC%96%E7%A8%8B/</link>
		<description>Recent content in 编程 on 我的博客</description>
		<generator>Hugo</generator>
		<language>zh-cn</language>
		
		
		
		
			<lastBuildDate>Sun, 15 Jun 2025 10:00:00 +0800</lastBuildDate>
		
			<atom:link href="https://blog-go3.pages.dev/tags/%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Rust 所有权模型</title>
				<link>https://blog-go3.pages.dev/posts/rust-ownership/</link>
				<pubDate>Sun, 15 Jun 2025 10:00:00 +0800</pubDate>
				<guid>https://blog-go3.pages.dev/posts/rust-ownership/</guid>
				<description>&lt;h2 id=&#34;为什么所有权存在&#34;&gt;为什么所有权存在&lt;/h2&gt;&#xA;&lt;p&gt;内存安全与性能往往不可兼得，Rust 通过所有权系统在编译期解决这个问题——没有垃圾回收，也不会悬垂指针。&lt;/p&gt;&#xA;&lt;h2 id=&#34;三条规则&#34;&gt;三条规则&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;每个值都有且只有一个所有者（owner）&lt;/li&gt;&#xA;&lt;li&gt;值在离开作用域时被自动释放（drop）&lt;/li&gt;&#xA;&lt;li&gt;同一时刻，要么有一个可变引用，要么有多个不可变引用&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fn&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; String::from(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; s2 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; s.clone();       &lt;span style=&#34;color:#75715e&#34;&gt;// 深拷贝&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    takes_ownership(s);       &lt;span style=&#34;color:#75715e&#34;&gt;// s 被移动&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;println!&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, s2);       &lt;span style=&#34;color:#75715e&#34;&gt;// s2 仍可用&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fn&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;takes_ownership&lt;/span&gt;(v: String) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;println!&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;got: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, v);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;借用与生命周期&#34;&gt;借用与生命周期&lt;/h2&gt;&#xA;&lt;p&gt;引用（borrow）不转移所有权。生命周期标注帮助编译器确认引用不会悬垂。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
