整数のリンクリストを作成する機能があります:
enum List<T> { Cons(T, ~List<T>), End }
fn range(start: int, end: int) -> ~List<int> {
if start >= end { ~End }
else { ~Cons(start, range(start+1, end)) }
}
ただし、uint、double などの任意の数値型の範囲を作成したいと考えています。しかし、たとえば、これは機能しません。
fn range<T: ord>(start: T, end: T) -> ~List<T> {
if start >= end { ~End }
else { ~Cons(start, range(start+1, end)) }
}
これは以下を生成します:
> rustc list.rs
list.rs:3:12: 3:15 error: use of undeclared type name `ord`
list.rs:3 fn range<T: ord>(start: T, end: T) -> ~List<T> {
^~~
error: aborting due to previous error
「数値」型で呼び出せるように制限する汎用関数を錆で作成するにはどうすればよいですか? 自分でインターフェイスを具体的に書く必要はありませんか?私は、多くの標準ライブラリの特性 (マニュアルのセクション 6.2.1.1 にリストされているものなどeq
、ord
、 など、しかし今ではそれらが適切な「特性」であるかどうか疑問に思っています)があると想定していました。ジェネリック関数を宣言するときに使用しますか?