我有一个函数可以制作一个整数链表:
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)) }
}
但是,我想制作任何数字类型的范围,包括 uints、doubles 等。但是,例如,这不起作用:
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
等,尽管现在我想知道这些是否是适当的“特征”)我可以声明泛型函数时使用?