从 Python 到 Rust:跨越这 3 个障碍,你就入门了!

文摘   科技   2024-12-10 00:38   四川  

引言

作为一个 Python 开发者,你是否也对 Rust 这门新兴的系统级编程语言充满好奇?本文将分享一位有着 15 年 Python 经验的开发者学习 Rust 时遇到的三大主要障碍,以及如何克服它们。让我们一起来看看从 Python 到 Rust 的转变之路!

1. 所有权、借用和生命周期

在 Rust 中,所有权(Ownership)是最基础的概念之一。它确保了内存安全,无需垃圾回收器。这一概念在其他语言中都是独一无二的。

来看一个简单的例子:

// 声明一个变量并赋值
let answer = 42;  // answer 获得值 42 的所有权

// 转移所有权
let number = answer;  // 所有权从 answer 转移到 number
// println!("{}", answer);  // 这行会报错,因为 answer 已经失效

借用系统

除了转移所有权,Rust 还提供了借用(Borrowing)机制:

fn main() {
    let mut original = String::from("你好");  // 可变的字符串
    
    // 不可变借用
    let borrowed = &original;  // 借用原始值的引用
    println!("借用的值: {}", borrowed);
    
    // 可变借用
    let mut_borrowed = &mut original;  // 可变借用
    mut_borrowed.push_str(",世界");  // 修改借用的值
    
    println!("修改后的值: {}", original);
}

2. Option 和 Result:优雅的错误处理

与 Python 中的 None 不同,Rust 使用 OptionResult 枚举类型来处理可能不存在的值和错误情况。

fn divide(x: f64, y: f64) -> Result<f64String> {
    if y == 0.0 {
        // 如果除数为 0,返回错误
        Err(String::from("除数不能为零"))
    } else {
        // 否则返回除法结果
        Ok(x / y)
    }
}

fn main() {
    // 使用 match 优雅处理结果
    match divide(10.02.0) {
        Ok(result) => println!("结果是: {}", result),
        Err(error) => println!("错误: {}", error),
    }
}

3. 特质(Trait)系统:告别类继承

Rust 没有传统的类和继承概念,而是使用特质(Trait)系统来实现代码复用和多态。

// 定义一个特质
trait 动物 {
    fn 叫声(&self);
}

// 实现结构体
struct 猫 {
    名字: String,
}

// 为猫实现动物特质
impl 动物 for 猫 {
    fn 叫声(&self) {
        println!("{} 说:喵喵喵!"self.名字);
    }
}

fn main() {
    let 我的猫 = 猫 {
        名字: String::from("咪咪"),
    };
    我的猫.叫声();
}

总结

从 Python 转向 Rust 确实存在一些挑战,但这些特性正是 Rust 的精髓所在:

  1. 所有权系统确保了内存安全
  2. Option/Result 让错误处理更加优雅
  3. 特质系统提供了比传统继承更灵活的代码复用方式

虽然学习曲线较陡,但掌握这些概念后,你会发现 Rust 提供的安全性和性能是值得的。特别是在构建高性能、高可靠性的系统时,Rust 的这些特性会让你的代码更加健壮。

参考文章

  1. Python to Rust: Breaking Down 3 Big Obstacles:https://towardsdatascience.com/python-to-rust-breaking-down-3-big-obstacles-094eb99e331d
  2. Rust 程序设计语言:https://doc.rust-lang.org/book/

书籍推荐

《Rust Web开发》是一本由德国作者 Bastian Gruber 所著的 Rust 语言 Web 开发指南。这本书适合已经具备一定 Rust 基础的读者,尤其是那些想要深入了解如何使用 Rust 构建 Web 应用程序的开发人员。书中不仅涵盖了 Rust 语言的基础知识,还详细介绍了如何使用 Rust 及其重要的库(如 Tokio、Warp 和 Reqwest)来创建服务端 Web 应用。内容包含异步环境中的借用检查器处理、Web API 的创建与 JSON 处理、Rust 异步开发技术栈的组建、错误处理、测试与部署等多个方面。通过阅读本书,读者将能够构建一个完整的 Q&A Web 服务,并逐章迭代代码,体验真实的项目开发过程。



  1.  Rust:横扫 C/C++/Go 的性能之王?

  2.  从 Rust 开发者视角看 C++:优缺点大揭秘

  3.  Rust vs Zig:新兴系统编程语言之争

数据科学研习社
带你走进数据科学的世界🚀
 最新文章