Rust 的Hello World

文章目录

你好,世界!

之前介绍了Rust的安装,那么,我们编写第一个Rust程序。遵循编程语言学习的传统,我们将编写一个在屏幕上打印"Hello, world!"的小程序!

注意:Rust不限制您使用的编辑器或代码存放位置,如果您更喜欢使用集成开发环境(IDE)而非命令行,请自由选择您熟悉的IDE。许多现代IDE已提供Rust支持(详见各IDE文档)。以本文为例,我是在VS Code上编辑代码。

创建项目目录

首先创建存放Rust代码的目录。

打开终端执行以下命令(不同系统有差异):

Linux/macOS/PowerShell:

bash 复制代码
mkdir ~/projects
cd ~/projects
mkdir hello_world
cd hello_world

Windows CMD:

bash 复制代码
mkdir "%USERPROFILE%\projects"
cd /d "%USERPROFILE%\projects"
mkdir hello_world
cd hello_world

编写并运行Rust程序

1. 创建源文件

新建名为main.rs的文件(Rust文件扩展名始终为.rs,多单词文件名建议用下划线分隔,如hello_world.rs

2. 编写代码

将以下代码写入main.rs

rust 复制代码
    // 文件名: main.rs
   fn main() {
       println!("Hello, world!");
   }

3. 编译运行

返回终端执行(注意不同系统的执行命令差异):

Linux/macOS:

bash 复制代码
 rustc main.rs  # 编译
./main         # 运行

Windows:

cmd 复制代码
 rustc main.rs
.\main.exe

成功运行将输出:

text 复制代码
   Hello, world!

若未看到输出,请参考官网安装章节的"故障排除"部分。

编译生成的目录如下图:

程序结构解析

main函数

rust 复制代码
fn main() {
    // 函数体
}
  • main函数是每个可执行Rust程序的入口
  • 无参数时保留空括号()
  • 函数体必须用{}包裹(Rust代码风格建议左花括号与函数声明同行,间隔一个空格)

提示:使用rustfmt工具(随Rust安装)可自动格式化代码为标准样式(详见官网文档附录D)

打印语句

rust 复制代码
println!("Hello, world!");
  • println!是Rust宏(!标识宏调用,与普通函数区分)
  • 字符串参数"Hello, world!"被输出到屏幕
  • 分号;表示语句结束(大多数Rust代码行以分号结尾)

编译与运行的分离

Rust采用预编译机制:

1. 编译阶段

使用rustc编译器生成二进制文件:

bash 复制代码
   rustc main.rs
  • 生成可执行文件(Linux/macOS: main,Windows: main.exe)
  • 类似C/C++的gcc/clang编译流程

2. 查看编译结果

Linux/macOS/PowerShell:

bash 复制代码
   ls  # 输出 main  main.rs

Windows CMD:

cmd 复制代码
   dir /B  # 输出 main.exe  main.pdb  main.rs
  • .pdb文件包含Windows调试信息

3. 运行阶段

直接执行二进制文件,无需Rust环境:

bash 复制代码
 ./main      # 类Unix系统
 .\main.exe  # Windows系统

与Ruby/Python/JavaScript等脚本语言的差异:

  • 动态语言需要运行时环境
  • Rust编译后生成独立可执行文件
  • 编译步骤增加了开发环节,但提升了部署便利性

下一步:Cargo工具

虽然rustc适合简单程序,但在实际开发中推荐使用Cargo(Rust官方构建工具):

  • 依赖管理
  • 项目配置
  • 跨平台构建
  • 代码共享
相关推荐
Dovis(誓平步青云)14 分钟前
探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)
开发语言·c++·stl·string
wheeldown17 分钟前
【C++】STL详解(四)---Stack和Queue
开发语言·c++
忆雾屿18 分钟前
云原生时代 Kafka 深度实践:03进阶特性与最佳实践
java·分布式·后端·kafka
我想睡觉26131 分钟前
Python打卡训练营Day40
开发语言·人工智能·python·深度学习·机器学习
比特森林探险记44 分钟前
Go语言结构体:数据组织的艺术
开发语言·后端·golang
天天摸鱼的java工程师1 小时前
Redis 是单线程的吗?带你全面了解 Redis 的线程模型与设计哲学
java·后端
天天摸鱼的java工程师1 小时前
Spring Boot 3 整合 Knife4j:从环境搭建到 API 文档生成实战
java·后端
风象南1 小时前
SpringBoot解决依赖冲突的5个技巧
java·spring boot·后端
天天摸鱼的java工程师1 小时前
优秀后端如何定义返回值?
java·后端
AI糊涂是福2 小时前
MATLAB语言教程:从入门到精通的全面指南
开发语言·matlab·信息可视化