温馨提示×

Linux Rust编程入门指南

小樊
64
2025-09-23 00:31:41
栏目: 编程语言

Linux下Rust编程入门指南

1. 环境准备:安装Rust工具链

在Linux系统中,推荐使用rustup(Rust官方工具链管理器)安装Rust,它集成了编译器(rustc)、包管理器(cargo)及常用工具。打开终端,执行以下命令:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

按照终端提示完成安装(需输入用户密码)。安装完成后,通过以下命令验证是否成功:

rustc --version  # 查看Rust编译器版本
cargo --version  # 查看cargo包管理器版本

若显示版本号,则说明安装成功。

2. 第一个Rust程序:Hello World

Rust的入口函数是main,使用println!("...")宏输出内容(println是宏,需用标识)。创建项目目录并编写代码:

mkdir ~/hello_rust && cd ~/hello_rust  # 创建项目目录
nano main.rs                         # 创建并编辑main.rs文件

main.rs中输入以下内容:

fn main() {
    println!("Hello, Rust on Linux!");  // 打印Hello World
}

保存并退出(Nano中按Ctrl+O保存,Ctrl+X退出)。编译并运行程序:

rustc main.rs      # 编译源文件(生成可执行文件hello_rust)
./hello_rust       # 运行可执行文件

终端将输出Hello, Rust on Linux!

3. 使用Cargo管理项目(推荐)

Cargo是Rust的官方项目管理工具,可简化构建、依赖管理和运行流程。创建新项目:

cargo new my_project  # 创建名为my_project的项目(自动生成src/main.rs和Cargo.toml)
cd my_project         # 进入项目目录

Cargo.toml是项目的配置文件(记录项目名称、版本、依赖等),src/main.rs是主程序入口。运行项目:

cargo run  # 自动编译并运行项目(等价于cargo build + ./target/debug/my_project)

构建发布版本(优化性能):

cargo build --release  # 生成可执行文件位于target/release/my_project

Cargo会自动处理依赖下载、编译缓存等问题,是Rust开发的必备工具。

4. Rust基础语法学习

变量与可变性

Rust变量默认不可变(immutable),使用let声明:

let x = 42;  // 不可变变量(类型自动推断为i32)
// x = 100;  // 编译错误:无法修改不可变变量

若需修改变量,需添加mut关键字:

let mut y = 10;  // 可变变量
y = 20;          // 合法

常量使用const声明,必须在编译时确定值:

const PI: f64 = 3.1415926;  // 常量(类型必须显式声明)

数据类型

  • 标量类型:整数(i32/u32,有符号/无符号32位整数)、浮点数(f32/f64)、布尔值(bool)、字符(char,4字节Unicode字符)。
  • 复合类型:元组(tuple,固定长度的不同类型组合,如(i32, f64))、数组(array,固定长度的同类型组合,如[i32; 5])。

控制流

  • 条件判断:使用if-else if-else,条件表达式必须返回bool类型:
    let score = 85;
    if score > 90 {
        println!("Excellent");
    } else if score > 75 {
        println!("Good");
    } else {
        println!("Pass");
    }
    
  • 循环loop(无限循环,需用break退出)、while(条件循环)、for(遍历集合):
    let mut i = 0;
    while i < 5 {
        println!("{}", i);
        i += 1;
    }
    for num in 0..5 {  // 0..5表示0到4的范围
        println!("{}", num);
    }
    

函数

使用fn关键字定义函数,返回值类型需用->标注(无返回值用()):

fn add(a: i32, b: i32) -> i32 {
    a + b  // 最后一行表达式的值作为返回值(无需分号)
}

5. 实战项目:从简单到进阶

初级项目:命令行工具

  • 端口扫描器:使用std::net模块扫描指定IP段的开放端口,学习网络编程和错误处理。
  • 文件批量重命名工具:使用std::fs模块遍历目录,批量修改文件名(如添加前缀)。

中级项目:网络服务

  • 简易HTTP服务器:使用hyperactix-web框架构建HTTP服务器,响应GET/POST请求(适合学习异步编程)。
  • 聊天应用:实现客户端-服务器模型,使用tokio处理异步通信(学习并发编程)。

高级项目:系统编程

  • Linux服务监控工具:使用tokio异步执行systemctl is-active命令,监控服务状态;通过lettre库发送邮件报警(整合配置文件、日志记录)。
  • Rust内核模块:使用rust-for-linux项目编写字符设备驱动(如虚拟设备),学习内核安全编程(需Linux内核源码和开发环境)。

6. 学习资源推荐

  • 官方文档:《The Rust Programming Language》(俗称“Rust圣经”),涵盖基础语法、所有权系统、并发编程等,是入门必看。
  • 在线练习Rustlings(小练习)、Exercism(算法题),通过实践巩固语法。
  • 社区与工具:加入Rust中文社区(如Rust.cc论坛)、关注Rust官方Twitter,获取最新动态;使用VS Code+Rust Analyzer插件(代码补全、错误提示)。

0