我有一个函数可以创建一个整数链表:
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
我如何在 rust 中创建一个通用函数,它限制自己可以被“数字”类型调用?无需自己专门编写接口(interface)?我曾假设有许多标准库特征(例如手册第 6.2.1.1 节中列出的特征,如 eq
、ord
等,尽管现在我我想知道这些是否是我在声明泛型函数时可以使用的适当“特征”?
最佳答案
特征通常是大写的。在这种情况下是Ord。看看是否有帮助。
关于typeclass - Rust:使用特征/类型类来实现通用数字函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017250/