<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # `Drop` 現在我們討論了trait,讓我們看看一個由Rust標準庫提供的特殊trait,[`Drop`](http://doc.rust-lang.org/nightly/std/ops/trait.Drop.html)。`Drop`trait提供了一個當一個值離開作用域后運行一些代碼的方法:例如: ~~~ struct HasDrop;impl Drop for HasDrop { fndrop(&mut self) { println!("Dropping!"); }}fnmain() { let x = HasDrop; // do stuff} // x goes out of scope here ~~~ 當在`main()`的末尾`x`離開作用域的時候,`Drop`的代碼將會執行。`Drop`有一個方法,他也叫做`drop()`。它獲取一個`self`的可變引用。 這就是全部!`Drop`的機制非常簡單,不過這有一些細節。例如,值會以與它們聲明相反的順序被丟棄(dropped)。這是另一個例子: ~~~ struct Firework { strength: i32,}impl Drop for Firework { fndrop(&mut self) { println!("BOOM times {}!!!", self.strength); }}fnmain() { let firecracker = Firework { strength: 1 }; let tnt = Firework { strength: 100 };} ~~~ 這會輸出: ~~~ BOOM times 100!!!BOOM times 1!!! ~~~ `tnt`在`firecracker`之前離開作用域(原文大意:TNT在爆竹之前爆炸),因為它在之后被聲明。先進,后出。 那么`Drop`有什么好處呢?通常來說,`Drop`用來清理任何與`struct`關聯的資源。例如,[`Arc<T>`類型](http://doc.rust-lang.org/nightly/std/sync/struct.Arc.html)是一個引用計數類型。當`Drop`被調用,它會減少引用計數,并且如果引用的總數為0,將會清除底層的值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看