This commit is contained in:
krahets
2025-03-14 17:51:07 +08:00
parent 1b1e1e354a
commit 3b08169043
39 changed files with 956 additions and 958 deletions
+100 -101
View File
@@ -5548,107 +5548,106 @@
<a id="__codelineno-93-11" name="__codelineno-93-11" href="#__codelineno-93-11"></a><span class="k">impl</span><span class="w"> </span><span class="n">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-12" name="__codelineno-93-12" href="#__codelineno-93-12"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-93-13" name="__codelineno-93-13" href="#__codelineno-93-13"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">new</span><span class="p">(</span><span class="n">capacity</span>: <span class="kt">usize</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">Self</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-14" name="__codelineno-93-14" href="#__codelineno-93-14"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">vec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Vec</span>::<span class="n">new</span><span class="p">();</span>
<a id="__codelineno-93-15" name="__codelineno-93-15" href="#__codelineno-93-15"></a><span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">capacity</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<a id="__codelineno-93-16" name="__codelineno-93-16" href="#__codelineno-93-16"></a><span class="w"> </span><span class="bp">Self</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-17" name="__codelineno-93-17" href="#__codelineno-93-17"></a><span class="w"> </span><span class="n">arr</span>: <span class="nc">vec</span><span class="p">,</span>
<a id="__codelineno-93-18" name="__codelineno-93-18" href="#__codelineno-93-18"></a><span class="w"> </span><span class="n">capacity</span><span class="p">,</span>
<a id="__codelineno-93-19" name="__codelineno-93-19" href="#__codelineno-93-19"></a><span class="w"> </span><span class="n">size</span>: <span class="mi">0</span><span class="p">,</span>
<a id="__codelineno-93-20" name="__codelineno-93-20" href="#__codelineno-93-20"></a><span class="w"> </span><span class="n">extend_ratio</span>: <span class="mi">2</span><span class="p">,</span>
<a id="__codelineno-93-21" name="__codelineno-93-21" href="#__codelineno-93-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-22" name="__codelineno-93-22" href="#__codelineno-93-22"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-23" name="__codelineno-93-23" href="#__codelineno-93-23"></a>
<a id="__codelineno-93-24" name="__codelineno-93-24" href="#__codelineno-93-24"></a><span class="w"> </span><span class="cm">/* 获取列表长度(当前元素数量)*/</span>
<a id="__codelineno-93-25" name="__codelineno-93-25" href="#__codelineno-93-25"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">size</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">usize</span> <span class="p">{</span>
<a id="__codelineno-93-26" name="__codelineno-93-26" href="#__codelineno-93-26"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
<a id="__codelineno-93-27" name="__codelineno-93-27" href="#__codelineno-93-27"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-28" name="__codelineno-93-28" href="#__codelineno-93-28"></a>
<a id="__codelineno-93-29" name="__codelineno-93-29" href="#__codelineno-93-29"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-93-30" name="__codelineno-93-30" href="#__codelineno-93-30"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">capacity</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">usize</span> <span class="p">{</span>
<a id="__codelineno-93-31" name="__codelineno-93-31" href="#__codelineno-93-31"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">;</span>
<a id="__codelineno-93-32" name="__codelineno-93-32" href="#__codelineno-93-32"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-33" name="__codelineno-93-33" href="#__codelineno-93-33"></a>
<a id="__codelineno-93-34" name="__codelineno-93-34" href="#__codelineno-93-34"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-93-35" name="__codelineno-93-35" href="#__codelineno-93-35"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">get</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">i32</span> <span class="p">{</span>
<a id="__codelineno-93-36" name="__codelineno-93-36" href="#__codelineno-93-36"></a><span class="w"> </span><span class="c1">// 索引如果越界,则抛出异常,下同</span>
<a id="__codelineno-93-37" name="__codelineno-93-37" href="#__codelineno-93-37"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-38" name="__codelineno-93-38" href="#__codelineno-93-38"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-39" name="__codelineno-93-39" href="#__codelineno-93-39"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-40" name="__codelineno-93-40" href="#__codelineno-93-40"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-93-41" name="__codelineno-93-41" href="#__codelineno-93-41"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-42" name="__codelineno-93-42" href="#__codelineno-93-42"></a>
<a id="__codelineno-93-43" name="__codelineno-93-43" href="#__codelineno-93-43"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-93-44" name="__codelineno-93-44" href="#__codelineno-93-44"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">set</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-45" name="__codelineno-93-45" href="#__codelineno-93-45"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-46" name="__codelineno-93-46" href="#__codelineno-93-46"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-47" name="__codelineno-93-47" href="#__codelineno-93-47"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-48" name="__codelineno-93-48" href="#__codelineno-93-48"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-49" name="__codelineno-93-49" href="#__codelineno-93-49"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-50" name="__codelineno-93-50" href="#__codelineno-93-50"></a>
<a id="__codelineno-93-51" name="__codelineno-93-51" href="#__codelineno-93-51"></a><span class="w"> </span><span class="cm">/* 在尾部添加元素 */</span>
<a id="__codelineno-93-52" name="__codelineno-93-52" href="#__codelineno-93-52"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">add</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-53" name="__codelineno-93-53" href="#__codelineno-93-53"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-93-54" name="__codelineno-93-54" href="#__codelineno-93-54"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-55" name="__codelineno-93-55" href="#__codelineno-93-55"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_capacity</span><span class="p">();</span>
<a id="__codelineno-93-56" name="__codelineno-93-56" href="#__codelineno-93-56"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-57" name="__codelineno-93-57" href="#__codelineno-93-57"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-58" name="__codelineno-93-58" href="#__codelineno-93-58"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-59" name="__codelineno-93-59" href="#__codelineno-93-59"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-60" name="__codelineno-93-60" href="#__codelineno-93-60"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-61" name="__codelineno-93-61" href="#__codelineno-93-61"></a>
<a id="__codelineno-93-62" name="__codelineno-93-62" href="#__codelineno-93-62"></a><span class="w"> </span><span class="cm">/* 在中间插入元素 */</span>
<a id="__codelineno-93-63" name="__codelineno-93-63" href="#__codelineno-93-63"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">insert</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-64" name="__codelineno-93-64" href="#__codelineno-93-64"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-65" name="__codelineno-93-65" href="#__codelineno-93-65"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-66" name="__codelineno-93-66" href="#__codelineno-93-66"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-67" name="__codelineno-93-67" href="#__codelineno-93-67"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-93-68" name="__codelineno-93-68" href="#__codelineno-93-68"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-69" name="__codelineno-93-69" href="#__codelineno-93-69"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_capacity</span><span class="p">();</span>
<a id="__codelineno-93-70" name="__codelineno-93-70" href="#__codelineno-93-70"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-71" name="__codelineno-93-71" href="#__codelineno-93-71"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-93-72" name="__codelineno-93-72" href="#__codelineno-93-72"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">).</span><span class="n">rev</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-73" name="__codelineno-93-73" href="#__codelineno-93-73"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-93-74" name="__codelineno-93-74" href="#__codelineno-93-74"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-75" name="__codelineno-93-75" href="#__codelineno-93-75"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-76" name="__codelineno-93-76" href="#__codelineno-93-76"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-77" name="__codelineno-93-77" href="#__codelineno-93-77"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-78" name="__codelineno-93-78" href="#__codelineno-93-78"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-79" name="__codelineno-93-79" href="#__codelineno-93-79"></a>
<a id="__codelineno-93-80" name="__codelineno-93-80" href="#__codelineno-93-80"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-93-81" name="__codelineno-93-81" href="#__codelineno-93-81"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">remove</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">i32</span> <span class="p">{</span>
<a id="__codelineno-93-82" name="__codelineno-93-82" href="#__codelineno-93-82"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-83" name="__codelineno-93-83" href="#__codelineno-93-83"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-84" name="__codelineno-93-84" href="#__codelineno-93-84"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-85" name="__codelineno-93-85" href="#__codelineno-93-85"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-93-86" name="__codelineno-93-86" href="#__codelineno-93-86"></a><span class="w"> </span><span class="c1">// 将将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-93-87" name="__codelineno-93-87" href="#__codelineno-93-87"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-88" name="__codelineno-93-88" href="#__codelineno-93-88"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-93-89" name="__codelineno-93-89" href="#__codelineno-93-89"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-90" name="__codelineno-93-90" href="#__codelineno-93-90"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-91" name="__codelineno-93-91" href="#__codelineno-93-91"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-92" name="__codelineno-93-92" href="#__codelineno-93-92"></a><span class="w"> </span><span class="c1">// 返回被删除的元素</span>
<a id="__codelineno-93-93" name="__codelineno-93-93" href="#__codelineno-93-93"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-94" name="__codelineno-93-94" href="#__codelineno-93-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-95" name="__codelineno-93-95" href="#__codelineno-93-95"></a>
<a id="__codelineno-93-96" name="__codelineno-93-96" href="#__codelineno-93-96"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-93-97" name="__codelineno-93-97" href="#__codelineno-93-97"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">extend_capacity</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-98" name="__codelineno-93-98" href="#__codelineno-93-98"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组复制到新数组</span>
<a id="__codelineno-93-99" name="__codelineno-93-99" href="#__codelineno-93-99"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">new_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_ratio</span><span class="p">;</span>
<a id="__codelineno-93-100" name="__codelineno-93-100" href="#__codelineno-93-100"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">new_capacity</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<a id="__codelineno-93-101" name="__codelineno-93-101" href="#__codelineno-93-101"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-93-102" name="__codelineno-93-102" href="#__codelineno-93-102"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">new_capacity</span><span class="p">;</span>
<a id="__codelineno-93-103" name="__codelineno-93-103" href="#__codelineno-93-103"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-104" name="__codelineno-93-104" href="#__codelineno-93-104"></a>
<a id="__codelineno-93-105" name="__codelineno-93-105" href="#__codelineno-93-105"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-93-106" name="__codelineno-93-106" href="#__codelineno-93-106"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">to_array</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-107" name="__codelineno-93-107" href="#__codelineno-93-107"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-93-108" name="__codelineno-93-108" href="#__codelineno-93-108"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Vec</span>::<span class="n">new</span><span class="p">();</span>
<a id="__codelineno-93-109" name="__codelineno-93-109" href="#__codelineno-93-109"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-110" name="__codelineno-93-110" href="#__codelineno-93-110"></a><span class="w"> </span><span class="n">arr</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
<a id="__codelineno-93-111" name="__codelineno-93-111" href="#__codelineno-93-111"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-112" name="__codelineno-93-112" href="#__codelineno-93-112"></a><span class="w"> </span><span class="n">arr</span>
<a id="__codelineno-93-113" name="__codelineno-93-113" href="#__codelineno-93-113"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-114" name="__codelineno-93-114" href="#__codelineno-93-114"></a><span class="p">}</span>
<a id="__codelineno-93-14" name="__codelineno-93-14" href="#__codelineno-93-14"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">vec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="fm">vec!</span><span class="p">[</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">capacity</span><span class="p">];</span>
<a id="__codelineno-93-15" name="__codelineno-93-15" href="#__codelineno-93-15"></a><span class="w"> </span><span class="bp">Self</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-16" name="__codelineno-93-16" href="#__codelineno-93-16"></a><span class="w"> </span><span class="n">arr</span>: <span class="nc">vec</span><span class="p">,</span>
<a id="__codelineno-93-17" name="__codelineno-93-17" href="#__codelineno-93-17"></a><span class="w"> </span><span class="n">capacity</span><span class="p">,</span>
<a id="__codelineno-93-18" name="__codelineno-93-18" href="#__codelineno-93-18"></a><span class="w"> </span><span class="n">size</span>: <span class="mi">0</span><span class="p">,</span>
<a id="__codelineno-93-19" name="__codelineno-93-19" href="#__codelineno-93-19"></a><span class="w"> </span><span class="n">extend_ratio</span>: <span class="mi">2</span><span class="p">,</span>
<a id="__codelineno-93-20" name="__codelineno-93-20" href="#__codelineno-93-20"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-21" name="__codelineno-93-21" href="#__codelineno-93-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-22" name="__codelineno-93-22" href="#__codelineno-93-22"></a>
<a id="__codelineno-93-23" name="__codelineno-93-23" href="#__codelineno-93-23"></a><span class="w"> </span><span class="cm">/* 获取列表长度(当前元素数量)*/</span>
<a id="__codelineno-93-24" name="__codelineno-93-24" href="#__codelineno-93-24"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">size</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">usize</span> <span class="p">{</span>
<a id="__codelineno-93-25" name="__codelineno-93-25" href="#__codelineno-93-25"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
<a id="__codelineno-93-26" name="__codelineno-93-26" href="#__codelineno-93-26"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-27" name="__codelineno-93-27" href="#__codelineno-93-27"></a>
<a id="__codelineno-93-28" name="__codelineno-93-28" href="#__codelineno-93-28"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-93-29" name="__codelineno-93-29" href="#__codelineno-93-29"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">capacity</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">usize</span> <span class="p">{</span>
<a id="__codelineno-93-30" name="__codelineno-93-30" href="#__codelineno-93-30"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">;</span>
<a id="__codelineno-93-31" name="__codelineno-93-31" href="#__codelineno-93-31"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-32" name="__codelineno-93-32" href="#__codelineno-93-32"></a>
<a id="__codelineno-93-33" name="__codelineno-93-33" href="#__codelineno-93-33"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-93-34" name="__codelineno-93-34" href="#__codelineno-93-34"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">get</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">i32</span> <span class="p">{</span>
<a id="__codelineno-93-35" name="__codelineno-93-35" href="#__codelineno-93-35"></a><span class="w"> </span><span class="c1">// 索引如果越界,则抛出异常,下同</span>
<a id="__codelineno-93-36" name="__codelineno-93-36" href="#__codelineno-93-36"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-37" name="__codelineno-93-37" href="#__codelineno-93-37"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-38" name="__codelineno-93-38" href="#__codelineno-93-38"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-39" name="__codelineno-93-39" href="#__codelineno-93-39"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-93-40" name="__codelineno-93-40" href="#__codelineno-93-40"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-41" name="__codelineno-93-41" href="#__codelineno-93-41"></a>
<a id="__codelineno-93-42" name="__codelineno-93-42" href="#__codelineno-93-42"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-93-43" name="__codelineno-93-43" href="#__codelineno-93-43"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">set</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-44" name="__codelineno-93-44" href="#__codelineno-93-44"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-45" name="__codelineno-93-45" href="#__codelineno-93-45"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-46" name="__codelineno-93-46" href="#__codelineno-93-46"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-47" name="__codelineno-93-47" href="#__codelineno-93-47"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-48" name="__codelineno-93-48" href="#__codelineno-93-48"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-49" name="__codelineno-93-49" href="#__codelineno-93-49"></a>
<a id="__codelineno-93-50" name="__codelineno-93-50" href="#__codelineno-93-50"></a><span class="w"> </span><span class="cm">/* 在尾部添加元素 */</span>
<a id="__codelineno-93-51" name="__codelineno-93-51" href="#__codelineno-93-51"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">add</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-52" name="__codelineno-93-52" href="#__codelineno-93-52"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-93-53" name="__codelineno-93-53" href="#__codelineno-93-53"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-54" name="__codelineno-93-54" href="#__codelineno-93-54"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_capacity</span><span class="p">();</span>
<a id="__codelineno-93-55" name="__codelineno-93-55" href="#__codelineno-93-55"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-56" name="__codelineno-93-56" href="#__codelineno-93-56"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-57" name="__codelineno-93-57" href="#__codelineno-93-57"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-58" name="__codelineno-93-58" href="#__codelineno-93-58"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-59" name="__codelineno-93-59" href="#__codelineno-93-59"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-60" name="__codelineno-93-60" href="#__codelineno-93-60"></a>
<a id="__codelineno-93-61" name="__codelineno-93-61" href="#__codelineno-93-61"></a><span class="w"> </span><span class="cm">/* 在中间插入元素 */</span>
<a id="__codelineno-93-62" name="__codelineno-93-62" href="#__codelineno-93-62"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">insert</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-63" name="__codelineno-93-63" href="#__codelineno-93-63"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-64" name="__codelineno-93-64" href="#__codelineno-93-64"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-65" name="__codelineno-93-65" href="#__codelineno-93-65"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-66" name="__codelineno-93-66" href="#__codelineno-93-66"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-93-67" name="__codelineno-93-67" href="#__codelineno-93-67"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-68" name="__codelineno-93-68" href="#__codelineno-93-68"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_capacity</span><span class="p">();</span>
<a id="__codelineno-93-69" name="__codelineno-93-69" href="#__codelineno-93-69"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-70" name="__codelineno-93-70" href="#__codelineno-93-70"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-93-71" name="__codelineno-93-71" href="#__codelineno-93-71"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">).</span><span class="n">rev</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-72" name="__codelineno-93-72" href="#__codelineno-93-72"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-93-73" name="__codelineno-93-73" href="#__codelineno-93-73"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-74" name="__codelineno-93-74" href="#__codelineno-93-74"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-75" name="__codelineno-93-75" href="#__codelineno-93-75"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-76" name="__codelineno-93-76" href="#__codelineno-93-76"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-77" name="__codelineno-93-77" href="#__codelineno-93-77"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-78" name="__codelineno-93-78" href="#__codelineno-93-78"></a>
<a id="__codelineno-93-79" name="__codelineno-93-79" href="#__codelineno-93-79"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-93-80" name="__codelineno-93-80" href="#__codelineno-93-80"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">remove</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span>: <span class="kt">usize</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="kt">i32</span> <span class="p">{</span>
<a id="__codelineno-93-81" name="__codelineno-93-81" href="#__codelineno-93-81"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-82" name="__codelineno-93-82" href="#__codelineno-93-82"></a><span class="w"> </span><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-93-83" name="__codelineno-93-83" href="#__codelineno-93-83"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-93-84" name="__codelineno-93-84" href="#__codelineno-93-84"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-93-85" name="__codelineno-93-85" href="#__codelineno-93-85"></a><span class="w"> </span><span class="c1">// 将将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-93-86" name="__codelineno-93-86" href="#__codelineno-93-86"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">index</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-87" name="__codelineno-93-87" href="#__codelineno-93-87"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-93-88" name="__codelineno-93-88" href="#__codelineno-93-88"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-89" name="__codelineno-93-89" href="#__codelineno-93-89"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-93-90" name="__codelineno-93-90" href="#__codelineno-93-90"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-93-91" name="__codelineno-93-91" href="#__codelineno-93-91"></a><span class="w"> </span><span class="c1">// 返回被删除的元素</span>
<a id="__codelineno-93-92" name="__codelineno-93-92" href="#__codelineno-93-92"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-93-93" name="__codelineno-93-93" href="#__codelineno-93-93"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-94" name="__codelineno-93-94" href="#__codelineno-93-94"></a>
<a id="__codelineno-93-95" name="__codelineno-93-95" href="#__codelineno-93-95"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-93-96" name="__codelineno-93-96" href="#__codelineno-93-96"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">extend_capacity</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-97" name="__codelineno-93-97" href="#__codelineno-93-97"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组复制到新数组</span>
<a id="__codelineno-93-98" name="__codelineno-93-98" href="#__codelineno-93-98"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">new_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_ratio</span><span class="p">;</span>
<a id="__codelineno-93-99" name="__codelineno-93-99" href="#__codelineno-93-99"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">arr</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">new_capacity</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<a id="__codelineno-93-100" name="__codelineno-93-100" href="#__codelineno-93-100"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-93-101" name="__codelineno-93-101" href="#__codelineno-93-101"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">new_capacity</span><span class="p">;</span>
<a id="__codelineno-93-102" name="__codelineno-93-102" href="#__codelineno-93-102"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-103" name="__codelineno-93-103" href="#__codelineno-93-103"></a>
<a id="__codelineno-93-104" name="__codelineno-93-104" href="#__codelineno-93-104"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-93-105" name="__codelineno-93-105" href="#__codelineno-93-105"></a><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">to_array</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-106" name="__codelineno-93-106" href="#__codelineno-93-106"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-93-107" name="__codelineno-93-107" href="#__codelineno-93-107"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Vec</span>::<span class="n">new</span><span class="p">();</span>
<a id="__codelineno-93-108" name="__codelineno-93-108" href="#__codelineno-93-108"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="bp">self</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-93-109" name="__codelineno-93-109" href="#__codelineno-93-109"></a><span class="w"> </span><span class="n">arr</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
<a id="__codelineno-93-110" name="__codelineno-93-110" href="#__codelineno-93-110"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-111" name="__codelineno-93-111" href="#__codelineno-93-111"></a><span class="w"> </span><span class="n">arr</span>
<a id="__codelineno-93-112" name="__codelineno-93-112" href="#__codelineno-93-112"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-93-113" name="__codelineno-93-113" href="#__codelineno-93-113"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">