MST

星途 面试题库

面试题:Rust集合错误处理之常见错误类型

在Rust集合操作中,比如`Vec`、`HashMap`,通常会遇到哪些类型的错误?请至少列举三种,并简要说明每种错误在什么操作场景下可能出现。
43.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 索引越界错误
    • 操作场景:在Vec中,当使用get方法以外的方式(如[]运算符)访问不存在的索引位置时会出现。例如let v = vec![1, 2, 3]; let value = v[10];,这里试图访问索引10,而Vec长度只有3,就会导致索引越界错误。
  2. 键不存在错误
    • 操作场景:在HashMap中,使用get方法获取一个不存在的键对应的值,返回None,如果使用get_mut并期望获取可修改的引用,或者使用get后未处理None情况直接解包值,就可能导致问题。例如let mut map = HashMap::new(); map.insert("key", 1); let value = map.get("non_existent_key").unwrap();,这里获取不存在的键并unwrap就会出错。
  3. 内存分配错误
    • 操作场景:在Vec不断增长时,如果系统内存不足,无法为新元素分配足够内存,就会出现此类错误。比如let mut v = Vec::new(); loop { v.push(1); },持续向Vec中添加元素,当内存耗尽时就会触发内存分配错误。
  4. 类型不匹配错误
    • 操作场景:当向HashMap插入键值对时,如果键或值的类型与HashMap定义的类型不匹配会出错。例如let mut map: HashMap<String, i32> = HashMap::new(); map.insert(123, "string");,这里键的类型是i32,与定义的String不匹配。