rust對結構體排序

2021-10-01 18:52:20 字數 1550 閱讀 4782

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就是關聯函式的一種。...