Skip to content

Commit

Permalink
deploy: 3818188
Browse files Browse the repository at this point in the history
  • Loading branch information
wusyong committed Jan 30, 2024
1 parent 08a546d commit 3ea320d
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion ch10-03-lifetime-syntax.html
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ <h3 id="函式簽名中的生命週期詮釋"><a class="header" href="#函式簽
<p>此程式碼能夠編譯成功並產生我們希望在範例 10-19 的 <code>main</code> 函式中得到的結果。</p>
<p>此函式簽名告訴 Rust 它有個生命週期 <code>'a</code>,函式的兩個參數都是字串切片,並且會有生命週期<code>'a</code>。此函式簽名還告訴了 Rust 從函式回傳的字串切片也會和生命週期 <code>'a</code> 存活的一樣久。實際上它代表 <code>longest</code> 函式回傳參考的生命週期與函式引數傳入時生命週期較短的參考的生命週期一樣。這樣的關係正是我們想讓 Rust 知道以便分析這段程式碼。</p>
<p>注意當我們在此函式簽名指定生命週期參數時,我們不會變更任何傳入或傳出數值的生命週期。我們只是告訴借用檢查器應該要拒絕任何沒有服從這些約束的數值。注意到 <code>longest</code> 函式不需要知道 <code>x</code><code>y</code> 實際上會活多久,只需要知道有某個作用域會用 <code>'a</code> 取代來滿足此簽名。</p>
<p>當要在函式詮釋生命週期時,詮釋會位於函式簽名中,而不是函式本體。就像型別會寫在簽名中一樣,生命週期詮釋會成為函式的一部份。在函式簽名加上生命週期能讓 Rust 編譯器的分析工作變得更輕鬆。如果當函式的詮釋或呼叫的方式出問題時,編譯器錯誤就能限縮到我們的程式碼中指出來。如果都改讓 Rust 編譯器去推到可能的生命週期關係的話,編譯器可能會指到程式碼真正出錯之後的好幾步之後。</p>
<p>當要在函式詮釋生命週期時,詮釋會位於函式簽名中,而不是函式本體。就像型別會寫在簽名中一樣,生命週期詮釋會成為函式的一部份。在函式簽名加上生命週期能讓 Rust 編譯器的分析工作變得更輕鬆。如果當函式的詮釋或呼叫的方式出問題時,編譯器錯誤就能限縮到我們的程式碼中指出來。如果都改讓 Rust 編譯器去推導可能的生命週期關係的話,編譯器可能會指到程式碼真正出錯之後的好幾步之後。</p>
<p>當我們向 <code>longest</code> 傳入實際參考時,<code>'a</code> 實際替代的生命週期為 <code>x</code> 作用域與 <code>y</code> 作用域重疊的部分。換句話說,泛型生命週期 <code>'a</code> 取得的生命週期會等於 <code>x</code><code>y</code> 的生命週期中較短的。因為我們將回傳的參考詮釋了相同的生命週期參數 <code>'a</code>,回傳參考的生命週期也會保證在 <code>x</code><code>y</code> 的生命週期較短的結束前有效。</p>
<p>讓我們來看看如何透過傳入不同實際生命週期的參考來使生命週期詮釋能約束 <code>longest</code> 函式,如範例 10-22 所示。</p>
<p><span class="filename">檔案名稱:src/main.rs</span></p>
Expand Down
2 changes: 1 addition & 1 deletion print.html
Original file line number Diff line number Diff line change
Expand Up @@ -6872,7 +6872,7 @@ <h3 id="函式簽名中的生命週期詮釋"><a class="header" href="#函式簽
<p>此程式碼能夠編譯成功並產生我們希望在範例 10-19 的 <code>main</code> 函式中得到的結果。</p>
<p>此函式簽名告訴 Rust 它有個生命週期 <code>'a</code>,函式的兩個參數都是字串切片,並且會有生命週期<code>'a</code>。此函式簽名還告訴了 Rust 從函式回傳的字串切片也會和生命週期 <code>'a</code> 存活的一樣久。實際上它代表 <code>longest</code> 函式回傳參考的生命週期與函式引數傳入時生命週期較短的參考的生命週期一樣。這樣的關係正是我們想讓 Rust 知道以便分析這段程式碼。</p>
<p>注意當我們在此函式簽名指定生命週期參數時,我們不會變更任何傳入或傳出數值的生命週期。我們只是告訴借用檢查器應該要拒絕任何沒有服從這些約束的數值。注意到 <code>longest</code> 函式不需要知道 <code>x</code> 和 <code>y</code> 實際上會活多久,只需要知道有某個作用域會用 <code>'a</code> 取代來滿足此簽名。</p>
<p>當要在函式詮釋生命週期時,詮釋會位於函式簽名中,而不是函式本體。就像型別會寫在簽名中一樣,生命週期詮釋會成為函式的一部份。在函式簽名加上生命週期能讓 Rust 編譯器的分析工作變得更輕鬆。如果當函式的詮釋或呼叫的方式出問題時,編譯器錯誤就能限縮到我們的程式碼中指出來。如果都改讓 Rust 編譯器去推到可能的生命週期關係的話,編譯器可能會指到程式碼真正出錯之後的好幾步之後。</p>
<p>當要在函式詮釋生命週期時,詮釋會位於函式簽名中,而不是函式本體。就像型別會寫在簽名中一樣,生命週期詮釋會成為函式的一部份。在函式簽名加上生命週期能讓 Rust 編譯器的分析工作變得更輕鬆。如果當函式的詮釋或呼叫的方式出問題時,編譯器錯誤就能限縮到我們的程式碼中指出來。如果都改讓 Rust 編譯器去推導可能的生命週期關係的話,編譯器可能會指到程式碼真正出錯之後的好幾步之後。</p>
<p>當我們向 <code>longest</code> 傳入實際參考時,<code>'a</code> 實際替代的生命週期為 <code>x</code> 作用域與 <code>y</code> 作用域重疊的部分。換句話說,泛型生命週期 <code>'a</code> 取得的生命週期會等於 <code>x</code> 與 <code>y</code> 的生命週期中較短的。因為我們將回傳的參考詮釋了相同的生命週期參數 <code>'a</code>,回傳參考的生命週期也會保證在 <code>x</code> 和 <code>y</code> 的生命週期較短的結束前有效。</p>
<p>讓我們來看看如何透過傳入不同實際生命週期的參考來使生命週期詮釋能約束 <code>longest</code> 函式,如範例 10-22 所示。</p>
<p><span class="filename">檔案名稱:src/main.rs</span></p>
Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion searchindex.json

Large diffs are not rendered by default.

0 comments on commit 3ea320d

Please sign in to comment.