MST

星途 面试题库

面试题:Rust泛型结构体在复杂场景中的应用

定义一个泛型结构体`Stack`,它实现一个栈的功能。栈需要支持`push`(压入元素)和`pop`(弹出元素)操作。泛型类型参数需要满足`Clone`和`Copy` trait。请编写完整的代码,并在`main`函数中演示如何使用这个`Stack`结构体存储和操作`i32`类型的数据。
46.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义泛型结构体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);
    }
}