日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rust 面向对象之Struct、impl、trait关键字使用

發布時間:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rust 面向对象之Struct、impl、trait关键字使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

rust 面向對象之Struct、impl、trait關鍵字使用

rust語言跟C、C++是一個性能級別的語言,在用法上要比C++簡單很多。例如:要實現一個web服務,RUST可以通過包管理工具直接安裝一個HTTP庫,然后使用。而C++則需要手動下載,手動導入相應的文件等等。
總的而言rust是非常值得學習的一門語言,根據項目的不同需求,不同的性能,靈活應用不同的語言。

2. rust 定義類

2. 1 rust 定義類成員變量

利用結構體(struct)定義成員變量

// 利用結構體定義成員變量 struct Fruit {color: String,weight: f32 }
  • 1
  • 2
  • 3
  • 4
  • 5

2.2. rust 定義類成員方法

利用impl關鍵字來定義結構體成員方法

// 利用impl關鍵字來定義結構體成員方法 impl Fruit {fn printInfo(&self) {println!("{},{}",self.color,self.weight);} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.3. 完整代碼

// 利用結構體定義成員變量 struct Fruit {color: String,weight: f32 } // 利用impl關鍵字來定義結構體成員方法 impl Fruit {fn printInfo(&self) {println!("{},{}",self.color,self.weight);} } // 調用 fn main() {let f = Fruit{color:String::from("green"), weight:12.5};f.printInfo(); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

問題來了,一般定義類前面都會有個關鍵字new,那么這個該怎么實現呢?看下面的例子。

3. rust 定義標準類

// 利用結構體定義成員變量 struct Fruit {color: String,weight: f32 } // 利用impl關鍵字來定義結構體成員方法 impl Fruit {// 相當于方法Fruit::new()調用fn new(color: String,weight:f32) -> Fruit {Fruit {color: color,weight: weight}}fn printInfo(&self) {println!("{},{}",self.color,self.weight);} } // 調用 fn main() {let f = Fruit::new(String::from("green"), 12.5);f.printInfo(); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

為什么在定義類方法printInfo(&self)里面傳的參數是&self?

解釋

  • impl關鍵字在struct、enum或者trait對象上實現方法調用語法
  • 關聯函數 (associated function) 的第一個參數通常為self參數。
  • 有幾種變體

  • self,允許實現者移動和修改對象,對應的閉包特性為FnOnce
  • &self,既不允許實現者移動對象也不允許修改,對應的閉包特性為Fn
  • &mut self,允許實現者修改對象但不允許移動,對應的閉包特性為FnMut
  • 不含self參數的關聯函數稱為靜態方法 (static method)
  • 4. rust 接口定義

    利用trait關鍵字定義一個接口

    // 接口 trait Area {fn area(&self) -> f64; }
    • 1
    • 2
    • 3
    • 4

    利用struct定義一個類

    // 具體類 struct Circle {r: f64 }
    • 1
    • 2
    • 3
    • 4

    讓【具體類】實現【接口】

    impl Area for Circle {fn area(&self) -> f64 {(3.14 * self.r) // 作為返回值 => 必須使用 () 括起來,并不能寫 ;} }
    • 1
    • 2
    • 3
    • 4
    • 5

    5. 完整代碼

    // 接口 trait Area {fn area(&self) -> f64; }// 具體類 struct Circle {r: f64 }// 讓【具體類】實現【接口】 impl Area for Circle {fn area(&self) -> f64 {(3.14 * self.r) // 作為返回值 => 必須使用 () 括起來,并不能寫 ;} }fn main() {let r = Circle {r:10.5};println!("area = {:?}", r.area()); }

    總結

    以上是生活随笔為你收集整理的rust 面向对象之Struct、impl、trait关键字使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。