Я пытаюсь реализовать несколько операций над параметризованным типом (в частности, некоторые общие операции «стека» поверх 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());
}
Приведенное выше не удается скомпилировать (на ржавчине каждую ночь) со следующей ошибкой:
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