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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

27.泛型generics.rs

發布時間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 27.泛型generics.rs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* fn max(array: &[i32]) -> i32 {let mut max_index = 0;let mut i = 1;while i < array.len() {if array[i] > array[max_index] {max_index = i;}i += 1;}array[max_index] }//下來一段代碼并不是用來運行的,而是用來描述一下函數泛型的語法格式 //關鍵也編譯不過:binary operation `>` cannot be applied to type `T`(并不是所有的數據類型都可以比大小) fn max<T>(array: &[T]) -> T {let mut max_index = 0;let mut i = 1;while i < array.len() {if array[i] > array[max_index] {max_index = i;}i += 1;}array[max_index]} *///最簡單的使用 fn test_1() {struct Point<T> {x: T,y: T,}//使用時并沒有聲明類型,這里使用的是自動類型機制let p1 = Point { x: 1, y: 2 };let p2 = Point { x: 1.0, y: 2.0 };//但不允許出現類型不匹配的情況如下://let p3 = Point {x: 1, y: 2.0};//x 與 1 綁定時就已經將 T 設定為 i32,所以不允許再出現 f64 的類型。//如果我們想讓 x 與 y 用不同的數據類型表示,可以使用兩個泛型標識符struct Point2<T1, T2> {x: T1,y: T2,} }fn test_2() {println!("-------------test_2------------");struct Point<T1, T2> {x: T1,y: T2,}//給泛型結構體定義泛型方法//注意,impl 關鍵字的后方必須有 <T>,因為它后面的 T 是以之為榜樣的impl<T1, T2> Point<T1, T2> {fn x(&self) -> &T1 {&self.x}fn y(&self) -> &T2 {&self.y}}//也可以為其中的一種泛型添加方法impl Point<f64, i32> {fn xx(&self) -> f64 {self.x}}let p = Point { x: 1, y: 2 };println!("p.x = {},p.y = {}", p.x(), p.y());let p2 = Point { x: 1.1, y: 2 };println!("p.xx = {}", p2.xx());//也可以隨意指定泛型代表的值,只不過由于沒有對應的泛型方法,所有無方法可用let p3 = Point { x: 1.1, y: "1111111111" };}fn test_3() {println!("-------------test_3------------");/*在使用泛型時,類型參數常常必須使用 trait 作為約束(bound)來明確規定 類型應實現哪些功能。例如下面的例子用到了 Display trait 來打印所以它用 Display 來約束 T,也就是說 T 必須實現 Display。*/use std::fmt::*;#[derive(Debug,Default)]struct StDebug{}//trait Debug{}// 泛型 `T` 必須實現 `Debug` 。只要滿足這點,無論什么類型// 都可以讓下面函數正常工作。fn print_debug<T: Debug>(t: &T) {println!("{:?}", t);}let tt:StDebug = Default::default();print_debug(&tt);}fn main() {test_1();test_2();test_3(); }

?

總結

以上是生活随笔為你收集整理的27.泛型generics.rs的全部內容,希望文章能夠幫你解決所遇到的問題。

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