我有一个函数,用于创建整数链表:
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)) }
}
然而,我想要制作一个包括无符号整数、双精度数等任何数值类型的范围。但是,例如下面的代码并不能达到效果:
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
我怎样在Rust中编写一个通用函数,限定只有"数值型"类型能够调用它?而不需要自己专门编写接口?我一度认为标准库中有许多特性(如手册第6.2.1.1节中列出的eq
,ord
等),但现在我想知道这些是否真正是 "特性"。我能否在声明通用函数时使用该特性?