商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Linux中Rust编程入门指南

Linux中Rust编程入门指南

  发布于2026-06-29 阅读(0)

扫一扫,手机访问

Linux下Rust编程入门指南:从环境搭建到基础实践

一、Linux下Rust环境搭建

在Linux上搞Rust开发,第一步当然是把工具链安排上。Rust官方推荐用 rustup 来管理工具链——它包含了编译器 rustc、包管理器 Cargo 等一整套东西。直接在终端跑下面这行命令就行:

Linux中Rust编程入门指南

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

装完之后,要么重启终端,要么手动跑一下 source $HOME/.cargo/env 让环境变量生效。然后验证一下:执行 rustc --versioncargo --version,如果都能看到版本号,说明环境已经就绪。

1.2 配置开发工具(VS Code + Rust Analyzer)

写代码光有编译器还不够,趁手的编辑器能让效率翻倍。推荐 VS Code 加上 Rust Analyzer 插件,具体步骤很简单:

  1. 去 VS Code 官网下载 Linux 版本(.deb 或 .rpm 包),用包管理器安装;
  2. 打开 VS Code,搜索“Rust Analyzer”插件并安装;
  3. (可选)再装个代码格式化工具:rustup component add rustfmt,之后写代码就能自动排版,看着舒服很多。

二、Rust基础语法学习

2.1 变量与可变性

Rust 里的变量默认是“不可变”的——这设计其实是为了防止你手滑改错数据。用 let 声明变量,如果要让它可变,得加个 mut 关键字:

let x = 5;       // 不可变变量
let mut y = 10;  // 可变变量
y = 20;          // 合法:可变变量可以重新赋值
// x = 30;        // 错误:不可变变量不能修改

常量用 const 声明,必须显式指定类型,而且值必须在编译时就确定:

const MAX_SCORE: u32 = 1000; // 常量
println!("Max score: {}", MAX_SCORE);

还有一个很实用的特性叫“遮蔽”(Shadowing):在同一作用域里,你可以重新声明同名变量,新变量会覆盖旧的。这在做类型转换或数据清洗时特别好用:

let x = 5;
let x = x + 1; // x 现在是 6
let x = x * 2; // x 现在是 12

2.2 数据类型

标量类型

  • 整数:比如 i8/u8(8位有符号/无符号)、i32/u32(32位)、isize/usize(跟系统架构有关,通常用于数组索引);
  • 浮点数f32(单精度)、f64(双精度,默认就是它);
  • 布尔值bool,只有 truefalse
  • 字符char,占4个字节,支持 Unicode,用单引号包裹。

复合类型

  • 元组(Tuple):长度固定,元素类型可以不同。通过 . 下标访问,也能解构:
let tup: (i32, f64, char) = (42, 3.14, 'a');
let (x, y, z) = tup; // 解构
println!("x={}, y={}, z={}", x, y, z);
  • 数组(Array):长度固定,元素类型相同。通过索引访问,越界会在编译阶段就报错:
let arr: [i32; 3] = [1, 2, 3]; // 长度为3的i32数组
println!("First element: {}", arr[0]); // 索引从0开始

2.3 函数

fn 关键字定义函数,参数和返回值都要显式声明类型。注意:函数的返回值是最后一个表达式(后面不带分号),它会隐式返回:

fn greet(name: &str) { // 无返回值(返回Unit类型 `()`)
    println!("Hello, {}!", name);
}

fn add(a: i32, b: i32) -> i32 { // 返回i32类型
    a + b // 无分号,隐式返回
}

调用的时候很直接:greet("Alice");let sum = add(5, 10);

2.4 控制流

条件语句(if)

if 后面的条件不用加括号,但代码块必须用 {} 包裹。而且 if 还能当作表达式使用:

let number = 7;
if number > 5 {
    println!("Greater than 5");
} else if number == 5 {
    println!("Equal to 5");
} else {
    println!("Less than 5");
}

// if 作为表达式
let result = if number > 0 { 10 } else { 20 };
println!("Result: {}", result);

循环

  • loop:无限循环,需要用 break 手动退出;
  • while:条件为真时循环执行;
  • for:遍历集合(比如数组、范围),比 while 更安全,不会越界。
// loop
let mut count = 0;
loop {
    println!("Loop: {}", count);
    count += 1;
    if count >= 3 { break; }
}

// while
let mut num = 3;
while num > 0 {
    println!("While: {}", num);
    num -= 1;
}

// for
let arr = [10, 20, 30];
for element in arr.iter() { // 使用iter()避免所有权问题
    println!("For: {}", element);
}

三、实战项目:创建第一个Rust程序

3.1 使用Cargo创建项目

Cargo 是 Rust 的包管理和构建工具,用它创建项目非常省事:

cargo new hello_rust  # 创建名为hello_rust的项目
cd hello_rust        # 进入项目目录

项目结构是这样的:

hello_rust/
├── Cargo.toml  # 项目配置文件(依赖、元数据)
└── src/
    └── main.rs # 主入口文件(默认生成了Hello World代码)

3.2 编写与运行程序

编辑 src/main.rs,把代码改成你想输出的内容,比如:

fn main() {
    println!("Hello, Rust!");
}

然后直接运行:

cargo run  # 编译并运行(自动生成可执行文件)

你会看到输出:

Hello, Rust!

如果想分开编译和运行,也可以:先 cargo build 生成 target/debug/hello_rust,然后再 ./target/debug/hello_rust 手动执行。

四、进阶方向建议

基础语法掌握之后,想深入的话,可以往这几个方向使劲:

  • 内存安全:搞懂 Rust 的所有权(Ownership)和借用(Borrowing)机制,特别是 String&str 的区别——这几乎是 Rust 的灵魂所在;
  • 并发编程:用 std::thread 模块写多线程,或者上 tokio 异步运行时,体验一下 Rust 的零成本抽象;
  • 网络编程:通过 std::net 模块实现 TCP/UDP 服务器或客户端,写个简单的聊天程序练练手;
  • 生态工具clippy 做代码检查、rustfmt 做格式化、cargo test 做单元测试——这些工具能帮你写出更规范、更健壮的代码。
本文转载于:https://www.yisu.com/ask/34123479.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注