Опитвам се да внедря няколко операции върху параметризиран тип (по-конкретно, някои често срещани операции „стек“ върху Vec<T>
. Въпреки това не съм сигурен как работи това (все още), така че ето съкратена версия на това, което в момента се боря с:
trait Stack<T> {
fn top(&self) -> Option<T>;
}
impl Stack for Vec<T> {
fn top<T>(&self) -> Option<T> {
match self.len() {
0 => None,
n => Some(self[n-1])
}
}
}
fn main() {
let mut stack: Vec<f64> = Vec::new();
stack.push(1324.4);
println!("{}", stack.top());
}
Горното не успява да се компилира (на rust nightly) със следната грешка:
test.rs:6:20: 6:21 error: use of undeclared type name `T`
test.rs:6 impl Stack for Vec<T> {
^
error: aborting due to previous error
.last()
, който можете да използвате. - person bluss   schedule 14.02.2015