Rust 学习笔记 - Hello world

前言

本文将讲解如何完成一个 Rust 项目的开发流程,从编写 “Hello, World!” 开始,到使用 Cargo 管理和运行项目。

编写 Hello world

开始一个新项目很简单,首先,创建一个包含 main.rs 文件的 hello_world 文件夹,并在 main.rs 文件中添加如下代码:

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

简单说明一下代码:

  1. fn main() { ... }:
    • fn 关键字用于声明一个新的函数,这里声明了一个名为 main 的函数。
    • main 函数是项目的入口函数,每个可执行的 Rust 程序都必须包含一个 main 函数。
    • 大括号 {} 包围着函数的主体内容。
  2. println!("Hello, world!");:
    • 这行代码调用了 Rust 的 println! 宏。
    • 宏是 Rust 中一种特殊的、可用于生成代码的工具。
    • 在这个场景中,println! 宏用于向程序的标准输出打印一行字符串。
    • 字符串 "Hello, world!" 被包括在双引号中,并在终端或命令行界面打印出来。
    • 注意宏的末尾有一个感叹号 !,这是 Rust 用于区分函数和宏的方法。

编译代码

通过 rustc 编译单个文件:

rustc main.rs

编译成功后,会生成一个同名的可执行文件:

通过 ./main 运行可执行文件,将在控制台看到 “Hello, world!”。

Cargo 项目

使用 rustc 直接编译是手动过程,主要用于编译单个 Rust 源文件,仅当项目很小且没有复杂依赖时适用。cargo 是 Rust 官方推荐的项目管理工具,它可以自动处理复杂的编译任务,包括依赖管理、编译、测试等,适用于任何规模的项目,并且提供了一致的项目结构和构建过程,所以,我们通常使用 Cargo 管理项目。

初始化项目

用以下命令创建一个标准的 Rust 项目结构:

cargo new hello_world

项目目录

hello_world/
.
├── .git
├── .gitignore
├── Cargo.toml       # 描述项目的配置文件,包括项目信息和依赖信息
└── src└── main.rs      # 项目代码的入口文件

编写代码

在 Rust 项目中,通常 main.rs 是的主入口文件。当创建一个可执行的 Rust 项目(也称为 binary crate)时,Cargo 默认会设置 main.rs 作为项目入口。main.rs 通常包含 main 函数,它是程序执行的入口。

我们打开 src/main.rs 文件,默认会有一段 “Hello world” 代码:

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

编译代码

当通过命令行运行 cargo build 命令来编译 Rust 项目时,Cargo 会执行一系列操作来编译你的代码,并生成编译结果。

cargo build

编译结束后,Cargo 会提供反馈,告知编译是否成功,以及相关信息。

编译成功

如果编译成功,通常会看到类似这样的输出:

这表示项目成功编译,没有出现错误。编译后的会生成可执行文件, 通常位于项目目录下的 target/debug/ 目录中。例如本项目名称是 hello_world,编译后的文件就叫做 hello_world(在 Windows 上是 hello_world.exe)。

target
├── CACHEDIR.TAG
└── debug├── build├── deps├── examples├── hello_world        # 类 Unix 操作系统可执行文件├── hello_world.d└── incremental

运行编译文件

  • 在类 Unix 系统中,直接通过命令行运行即可
  • 在 windows 系统中,双击 hello_world.exe 运行即可

编译错误

如果源码有错误,cargo build 会中止编译过程,并显示错误信息。错误信息会标明出错的文件和行号,以及错误的类型和可能的解释。

在这个例子中,Rust 编译器告诉你 main.rs 文件的第 2 行有一个类型不匹配的错误。

编译警告

如果代码中存在一些潜在的隐患问题,编译器会输出警告信息,但不会中止编译。

这个警告告诉你有一个未使用的变量 x

运行代码

通过 cargo run 命令可以立即执行编译后的可执行文件,简化了 cargo build 与运行可执行文件这一流程。

结语

至此,一个简单的 ”Hello World“ 的示例已经讲解完成,本篇主要需要掌握的就是通过 Cargo 可以创建项目与运行项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/472911.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错误处理 ssh登陆提示:server unexpectedly closed network connection

干了一天的活,因为对etc做权限操作,导致ssh不能连接,差点奔溃 记这次处理经验 因修改/etc/ssh权限导致的ssh不能连接异常解决方法 现象: $ssh XXX192.168.5.21 出现以下问题 Read from socket failed: Connectionreset by peer …

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

最近在学习Dynamo中Python Script的用法,发现这个东西用起来太不友好了,不支持自动缩进,不支持自动填充和提示。用过Visual Studio做二开的都知道,在引用了Revit api以后,就可以自动填充和提示了。 本来英语就不好&am…

图像识别基础之模板匹配

principle 图像匹配 本质:图像的相似度很高(矩阵的相似度很高) code /*\brief 我的图像匹配函数,获取差方和均值最小的矩阵作为结果\param srcPicFile:用以匹配的图像文件\param templatePicFile:模板图像文件\param destPicFile:输出的检测结果文件…

一周学会Django5 Python Web开发-项目配置settings.py文件-数据库配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…

【Linux内核】从0开始入门Linux Kernel源码

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[Linux内核] ❤️ 前置学习专栏:[Linux学习]从0到1 ⏰ 我们仍在旅途 ​ 目录 …

Qt:Qt3个窗口类的区别、VS与QT项目转换

一、Qt3个窗口类的区别 QMainWindow:包含菜单栏、工具栏、状态栏 QWidget:普通的一个窗口,什么也不包括 QDialog:对话框,常用来做登录窗口、弹出窗口(例如设置页面) QDialog实现简易登录界面…

GET 和 POST 方法有什么区别?

1.概述 当客户端通过 Web 与服务器通信时,此过程由超文本传输​​协议 ( HTTP) 启用。HTTP 是客户端和服务器之间的请求-响应协议。 GET 和 POST 方法是两种最常见的HTTP 请求方法。它们用于检索数据或将数据发送到服务器。它们是客户端-服务器模型的组成部分&…

Lua内存管理策略

传统的内存管理策略主要分为两种:引用计数,和垃圾回收。相比后者每一段时间执行一次回收周期,前者是对于每一个变量都维护被引用数的策略。对于Lua这种轻量化语言而言,占据大内存的开销是极力避免的,而前者的方式显然是…

文件夹删不掉,显示在另一个文件中打开怎么办

问题: 一、想要删掉这个文件夹,却因为文件夹中的文件打开了删不掉,这里我因为做的测试,所以是知道打开了什么 二、一般情况下文件比较多时,是不知道打开了什么的,长这个样子 解决: 一、打开任…

《Go 简易速速上手小册》第4章:接口与抽象(2024 最新版)

文章目录 4.1 接口的定义与实现 - Go 语言的多面手4.1.1 基础知识讲解4.1.2 重点案例:动物乐队功能描述实现代码 4.1.3 拓展案例 1:通用支付系统拓展案例 1:通用支付系统功能描述实现代码 4.1.4 拓展案例 2:动物园管理器拓展案例 …

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十一)(4)(5)

实验十一:非线性方程(组)求解 练习四 1.费根鲍姆(Feigenbaum)对超越函数 (λ为非负实数)进行了分叉与混沌的研究,试利用迭代格式 ,做出相应的费根鲍姆图. clc;clear; a0.5;%x初值取0.5 for l1:0.01:1.5hold on x[a]; for k2:150x(k)l*sin…

通过玩游戏学会AWS

游戏名字: Cloud Quest 类型:亚马逊云科技官方出了一款 3D 角色扮演、虚拟城市建造形式的游戏实验课 进入方法:浏览器搜索 Cloud Quest(或扫描下方二维码)进入 Cloud Quest 课程页。 选择以下的链接 点击进行注册 进…