// 定义泛型结构体Stack
struct Stack<T>
where
T: Clone + Copy,
{
elements: Vec<T>,
}
// 为Stack实现方法
impl<T> Stack<T>
where
T: Clone + Copy,
{
// 新建一个空栈
fn new() -> Self {
Stack { elements: Vec::new() }
}
// 压入元素
fn push(&mut self, element: T) {
self.elements.push(element);
}
// 弹出元素
fn pop(&mut self) -> Option<T> {
self.elements.pop()
}
}
fn main() {
// 创建一个i32类型的栈
let mut stack: Stack<i32> = Stack::new();
// 压入元素
stack.push(1);
stack.push(2);
stack.push(3);
// 弹出元素并打印
while let Some(element) = stack.pop() {
println!("Popped: {}", element);
}
}