<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                有時,函數可能有相同的名字。就像下面這些代碼: ~~~ trait Foo { fn f(&self); } trait Bar { fn f(&self); } struct Baz; impl Foo for Baz { fn f(&self) { println!("Baz’s impl of Foo"); } } impl Bar for Baz { fn f(&self) { println!("Baz’s impl of Bar"); } } let b = Baz; ~~~ 如果我們嘗試調用`b.f()`,我們會得到一個錯誤: ~~~ error: multiple applicable methods in scope [E0034] b.f(); ^~~ note: candidate #1 is defined in an impl of the trait `main::Foo` for the type `main::Baz` fn f(&self) { println!("Baz’s impl of Foo"); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: candidate #2 is defined in an impl of the trait `main::Bar` for the type `main::Baz` fn f(&self) { println!("Baz’s impl of Bar"); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ 我們需要一個區分我們需要調用哪一函數的方法。這個功能叫做“通用函數調用語法”(universal function call syntax),這看起來像這樣: ~~~ Foo::f(&b); Bar::f(&b); ~~~ 讓我們拆開來看。 ~~~ Foo:: Bar:: ~~~ 調用的這一半是兩個traits的類型:`Foo`和`Bar`。這樣實際上就區分了這兩者:Rust調用你使用的trait里面的方法。 ~~~ f(&b) ~~~ 當我們使用[方法語法](http://doc.rust-lang.org/nightly/book/method-syntax.html)調用像`b.f()`這樣的方法時,如果`f()`需要`&self`,Rust實際上會自動地把`b`借用為`&self`。而在這個例子中,Rust并不會這么做,所以我們需要顯式地傳遞一個`&b`。 ## 尖括號形式(Angle-bracket Form) 我們剛才討論的通用函數調用語法的形式: ~~~ Trait::method(args); ~~~ 上面的形式其實是一種縮寫。這是在一些情況下需要使用的擴展形式: ~~~ <Type as Trait>::method(args); ~~~ ``中。在這個例子中,類型是`Type as Trait`,表示我們想要`method`的`Trait`版本被調用。在沒有二義時`as Trait`部分是可選的。尖括號也是一樣。因此上面的形式就是一種縮寫的形式。 這是一個使用較長形式的例子。 ~~~ trait Foo { fn clone(&self); } #[derive(Clone)] struct Bar; impl Foo for Bar { fn clone(&self) { println!("Making a clone of Bar"); <Bar as Clone>::clone(self); } } ~~~ 這會調用`Clone`trait的`clone()`方法,而不是`Foo`的。
                  <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>

                              哎呀哎呀视频在线观看