Rust 入门指南:从零开始的编程之旅

文摘   科技   2024-10-04 11:42   四川  

引言

大家好!今天我们来聊聊 Rust 这门令人兴奋的编程语言。无论你是编程新手,还是经验丰富的开发者,Rust 都能为你的技术栈带来独特的价值。本文将为你提供一份简明扼要的 Rust 入门指南,带你快速了解 Rust 的核心概念和特性。让我们一起踏上这段充满挑战和乐趣的 Rust 学习之旅吧!

Rust 基础知识

基本类型和变量

Rust 提供了丰富的基本类型,包括:

  1. 布尔型:bool
  2. 整数型:如 i32u64
  3. 浮点数:f32f64
  4. 字符型:char
  5. 字符串:&strString

来看一个简单的例子:

let is_rust_fun = true;  // 布尔型
let answer = 42;  // 整数型
let pi = 3.14159;  // 浮点数
let rust_mascot = '🦀';  // 字符型
let greeting = "Hello, Rust!";  // 字符串

println!("Is Rust fun? {}", is_rust_fun);
println!("The answer is {}", answer);
println!("Pi is approximately {}", pi);
println!("Rust's mascot is {}", rust_mascot);
println!("{}", greeting);

控制流

Rust 的控制流结构包括:

  1. if 条件语句
  2. loopwhilefor 循环
  3. match 模式匹配

这里有一个简单的 for 循环示例:

for i in 1..=5 {
    println!("数字:{}", i);
}

输出结果:

数字:1
数字:2
数字:3
数字:4
数字:5

所有权和借用

Rust 的所有权系统是其最独特的特征之一。它通过以下规则来管理内存:

  1. 每个值只能有一个所有者
  2. 当所有者离开作用域时,值会被丢弃
  3. 你可以借用值的引用,但要遵守借用规则

看一个所有权转移的例子:

let s1 = String::from("Hello");  // s1 拥有这个字符串
let s2 = s1;  // 所有权从 s1 转移到 s2
// println!("{}", s1);  // 错误:s1 已经无效
println!("{}", s2);  // 正确:s2 现在拥有字符串

输出结果:

Hello

Rust 进阶特性

结构体和枚举

结构体和枚举是 Rust 中定义新类型的主要方式:

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
}

enum IpAddrKind {
    V4(u8u8u8u8),
    V6(String),
}

let user1 = User {
    username: String::from("rustacean"),
    email: String::from("rust@example.com"),
    sign_in_count: 1,
};

let home = IpAddrKind::V4(127001);
let loopback = IpAddrKind::V6(String::from("::1"));

println!("User: {} ({})", user1.username, user1.email);

模式匹配

Rust 的 match 表达式非常强大,可以用于复杂的模式匹配:

let number = 42;

match number {
    0 => println!("零"),
    1..=9 => println!("个位数"),
    10..=99 => println!("两位数"),
    _ => println!("三位数或更大"),
}

输出结果:

两位数

错误处理

Rust 使用 ResultOption 枚举来处理错误和可能的空值:

fn divide(x: f64, y: f64) -> Result<f64String> {
    if y == 0.0 {
        Err("除数不能为零".to_string())
    } else {
        Ok(x / y)
    }
}

match divide(10.02.0) {
    Ok(result) => println!("结果: {}", result),
    Err(e) => println!("错误: {}", e),
}

match divide(10.00.0) {
    Ok(result) => println!("结果: {}", result),
    Err(e) => println!("错误: {}", e),
}

输出结果:

结果: 5
错误: 除数不能为零

总结

Rust 是一门既强大又安全的编程语言,它的所有权系统、零成本抽象和内存安全保证使其在系统编程和高性能应用开发中备受青睐。我们在这篇文章中简要介绍了 Rust 的基础知识和一些进阶特性,希望能为你的 Rust 学习之旅提供一个良好的起点。

参考文章

  1. Rust 官方文档:https://doc.rust-lang.org/book/
  2. Rust by Example:https://doc.rust-lang.org/rust-by-example/
  3. The Rust Programming Language(中文版):https://kaisery.github.io/trpl-zh-cn/

书籍推荐

各位 Rust 爱好者,今天为大家介绍一本《Programming Rust: Fast, Safe Systems Development》(第二版) 是由 Jim Blandy、Jason Orendorff 和 Leonora Tindall 合著的 Rust 编程指南。本书深入探讨了 Rust 语言在系统编程中的应用,着重介绍如何利用 Rust 的独特特性来平衡性能和安全性。书中涵盖了 Rust 的基础数据类型、所有权和借用概念、特征和泛型、并发编程、闭包、迭代器以及异步编程等核心内容。这本更新版基于 Rust 2021 版本,为系统程序员提供了全面而实用的 Rust 编程指导。




1. Rust:横扫 C/C++/Go 的性能之王?
2. Rust vs C++:性能之巅的对决
3. Rust vs Zig:新兴系统编程语言之争
4. Rust vs Python:哪个更适合你?

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