This commit is contained in:
krahets
2023-11-14 21:31:26 +08:00
parent 99bd281f11
commit 8e0382f714
11 changed files with 125 additions and 124 deletions

View File

@@ -5105,13 +5105,13 @@
<a id="__codelineno-81-34" name="__codelineno-81-34" href="#__codelineno-81-34"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-81-35" name="__codelineno-81-35" href="#__codelineno-81-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-81-36" name="__codelineno-81-36" href="#__codelineno-81-36"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-81-37" name="__codelineno-81-37" href="#__codelineno-81-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">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-37" name="__codelineno-81-37" href="#__codelineno-81-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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-38" name="__codelineno-81-38" href="#__codelineno-81-38"></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-81-39" name="__codelineno-81-39" href="#__codelineno-81-39"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-81-40" name="__codelineno-81-40" href="#__codelineno-81-40"></a>
<a id="__codelineno-81-41" name="__codelineno-81-41" href="#__codelineno-81-41"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-81-42" name="__codelineno-81-42" href="#__codelineno-81-42"></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-81-43" name="__codelineno-81-43" href="#__codelineno-81-43"></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">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-43" name="__codelineno-81-43" href="#__codelineno-81-43"></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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-44" name="__codelineno-81-44" href="#__codelineno-81-44"></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-81-45" name="__codelineno-81-45" href="#__codelineno-81-45"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-81-46" name="__codelineno-81-46" href="#__codelineno-81-46"></a>
@@ -5128,7 +5128,7 @@
<a id="__codelineno-81-57" name="__codelineno-81-57" href="#__codelineno-81-57"></a>
<a id="__codelineno-81-58" name="__codelineno-81-58" href="#__codelineno-81-58"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-81-59" name="__codelineno-81-59" href="#__codelineno-81-59"></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-81-60" name="__codelineno-81-60" href="#__codelineno-81-60"></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">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-60" name="__codelineno-81-60" href="#__codelineno-81-60"></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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-61" name="__codelineno-81-61" href="#__codelineno-81-61"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-81-62" name="__codelineno-81-62" href="#__codelineno-81-62"></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-81-63" name="__codelineno-81-63" href="#__codelineno-81-63"></a><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">extend_capacity</span><span class="p">();</span>
@@ -5144,7 +5144,7 @@
<a id="__codelineno-81-73" name="__codelineno-81-73" href="#__codelineno-81-73"></a>
<a id="__codelineno-81-74" name="__codelineno-81-74" href="#__codelineno-81-74"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-81-75" name="__codelineno-81-75" href="#__codelineno-81-75"></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-81-76" name="__codelineno-81-76" href="#__codelineno-81-76"></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">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-76" name="__codelineno-81-76" href="#__codelineno-81-76"></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><span class="fm">panic!</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)};</span>
<a id="__codelineno-81-77" name="__codelineno-81-77" href="#__codelineno-81-77"></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-81-78" name="__codelineno-81-78" href="#__codelineno-81-78"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-81-79" name="__codelineno-81-79" href="#__codelineno-81-79"></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>