ord:
Ordtrait を stdlib側 で定義 し、整列 や探索 が比較意味論 を trait経由 で受 け取 れるようにします。alloc/collections/vec/sortのような汎用 アルゴリズムから、型 ごとの比較 を切 り離 します。
Ordは strict less-than (a < b) を最小 capability とします。<=,>,>=はこのltから構成 します。
- 各 impl に
依存 します。ここで提供 する基本型 impl は O(1) です。
Ord: strict less-than を
要素型 にa < bを与 え、整列 や二分探索 の基礎 として使 えるようにします。
ltは strict less-than です。等 しい場合 はfalseを返 します。全順序 が必要 な文脈 では、impl側 が推移律 や反対称性 を満 たすようにしてください。
ord_lt: trait
- generic bound で
Ordを使 う共通入口 を提供 します。
TEST
#entry main
#target core
#import "core/test" as *
#import "core/traits/ord" as *
fn main <()*>i32> ():
assert ord_lt 2 3;
assert not ord_lt 3 3;
0ord_le: trait a <= b を
not (b < a)として求 めます。
ord_gt: trait a > b を
b < aとして求 めます。
ord_ge: trait a >= b を
not (a < b)として求 めます。