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: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值