MST

星途 面试题库

面试题:Rust中trait里关联类型的基础使用

请描述在Rust中,如何在trait里定义一个关联类型,并在实现该trait的结构体中使用这个关联类型。请给出具体的代码示例,要求定义一个包含关联类型的trait,以及至少一个实现该trait的结构体。
28.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义一个包含关联类型的trait
trait Container {
    // 关联类型
    type Item;

    fn push(&mut self, item: Self::Item);
    fn pop(&mut self) -> Option<Self::Item>;
}

// 实现该trait的结构体
struct Stack<T> {
    items: Vec<T>,
}

impl<T> Container for Stack<T> {
    type Item = T;

    fn push(&mut self, item: Self::Item) {
        self.items.push(item);
    }

    fn pop(&mut self) -> Option<Self::Item> {
        self.items.pop()
    }
}