use std:
:cmp:
:ordering;
use rand:
:rng;
//匯入外部的包... 記得修改toml檔案
//保證age是可比較的
pub struct person<
t: std:
:cmp:
:partialord>
//注意泛型t的位置
impl<
t> person<
t> where t
:std:
:cmp:
:partialord}}
//讓person可比較大小, 操作符過載???
impl<
t:std:
:cmp:
:partialord> partialord for person<
t>
}//讓person可比較是否相等, 操作符過載???
impl<
t:std:
:cmp:
:partialord> partialeq for person<
t>}/*
--排序的vec中的t
--跟person的t 之間不一樣
*/pub fn quicksort<
t>
( arr :
&mut vec<
t>
)where t
:std:
:cmp:
:partialord
fn quick_sorted<
t>
( arr:
&mut vec<
t>
, a:usize,b : usize)where t
:std:
:cmp:
:partialord
else
quick_sorted
(arr,p+
1,b);}
}}//注意a的寫法... vec下標為 usize, 容易越界, 不過發現更多的小錯誤...
fn partion<
t>
( arr :
&mut vec<
t>
, p:usize,r:usize)
->usize where t
:std:
:cmp:
:partialord
} arr.
swap
(i,r)
; i
}//插入排序
fn insert_sorted<
t>
( arr :
&mut vec<
t>
,l:usize,r:usize) where t
:std:
:cmp:
:partialord }}
fn main()
quicksort
(&mut a)
;for i in
&a "
,i.age)
}}
Rust學習 結構體
討論元組和結構體,比較 對比 如何定義和例項化結構體 如何定義關聯函式 一 結構體 使用struct 關鍵字宣告 struct user 例項可變可以使用點號修改結構體某個字段。rust不允許只將乙個不可變的結構體中某個字段標記為可變。元組結構體 1.給元組命名 2.使元組成為與其他元組不同的型別 ...
rust筆記5結構體
結構體的基本定義方式和使用方式 struct user fn main 上述的結構體是不可變的,如果想要在執行的時候改變結構體的值,需要宣告為可變的結構體 struct user fn main user2.username string from foo1 如果我們想用預設值的方式制定結構,可以利...
Rust結構體關聯函式
除了 方法,rust塊還允許我們定義不用接收 self 作為引數的函式。由於這類函式與結構體相互關聯,所以它們也被稱為關聯函式 associated function 我們將其命名為函式而不是方法,是因為它們不會作用域某個具體的結構體例項。比如,曾經接觸過的string from就是關聯函式的一種。...