当前位置: 首页 > article >正文

Rust 面试题

1. Rust 中的所有权(Ownership)是什么?

回答:
所有权是 Rust 的核心概念之一,每个值在 Rust 中都有一个唯一的所有者,并且所有权在作用域内转移。当所有者离开作用域时,Rust 会自动释放该值的内存,避免了内存泄漏。

代码示例:

fn main() {
   
    let s1 = String::from("hello");
    let s2 = s1;  // 所有权转移,s1 不再有效

    // println!("{}", s1); // 编译错误,s1 已失效
    println!("{}", s2);
}

2. Rust 中的生命周期(Lifetimes)是什么?

回答:
生命周期是 Rust 中用于确保引用有效性的机制。它通过生命周期标注让编译器知道引用的作用域,避免悬垂指针和数据竞争。

代码示例:

fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
   
    if s1.len() > s2.len() {
   
        s1
    } else {
   
        s2
    }
}

3. Rust 中的 Option 类型是什么?

回答:
Option 类型表示一个可能存在也可能不存在的值,常用来处理可能返回 None 的函数,避免使用 null

代码示例:

fn find_item(val: i32) -> Option<i32> {
   
    if val > 0 {
   
        Some(val)
    } else {
   
        None
    }
}

4. Rust 中的 Result 类型是什么?

回答:
Result 类型用于处理可能出错的操作,包含两个变体:Ok(T)Err(E)

代码示例:

fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
   
    if b == 0 {
   
        Err("Division by zero")
    } else {
   
        Ok(a / b)
    }
}

5. Rust 中的模式匹配(Pattern Matching)如何工作?

回答:
match 语句是 Rust 中的一个强大工具,用于匹配值与模式并执行相应的代码。

代码示例:

enum Direction {
   
    Up,
    Down,
    Left,
    Right,
}

fn move_player(direction: 

http://www.kler.cn/a/554108.html

相关文章:

  • 机器学习·数据处理
  • 【Python爬虫(17)】突破爬虫IP限制,解锁数据抓取新姿势
  • 【Scrapy】Scrapy教程4——命令行工具
  • 实现一个专注应用-后端开发(一)-搭建
  • QML Image 圆角设置
  • 从猜想终结到算法革新,弹性哈希开启数据存储新篇章
  • docker run --ipc=host参数含义
  • UniApp 面试题 超基础
  • C++效率掌握之STL库:vector函数全解
  • ubuntu 创建交换分区 或者扩容交换分区
  • 鸿蒙中,UIAbility组件启动模式(3种分别是Singleton(单实例模式)Multiton(多实例模式)Specified(指定实例模式))
  • Python常见面试题的详解13
  • 解决 Nginx 代理后 HTTP 头部丢失的问题:以 access_token 为例
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】
  • rust学习五、认识所有权
  • unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake
  • 图解MySQL【日志】——Buffer Pool
  • Java Applet 学习笔记(详细版)
  • Redis 过期键(expires)机制详解
  • Linux 内存管理与文件页缓冲区