Rust语言基础:从Hello World开始

大家好,我是[lincyang]。

我们将一起探索Rust语言的基础,从最经典的程序入手——“Hello, World!”。

Rust简介

Rust是一种系统编程语言,由Mozilla赞助开发,旨在提供内存安全、并发性和实用性。它的设计思想强调安全性和性能,是系统级编程的现代替代品。

安装Rust

开始之前,我们需要安装Rust编译器和它的包管理工具Cargo。Rust提供了一个方便的安装脚本,可以通过以下命令在Unix-like系统上安装:

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

在Windows上,你可以下载并运行rustup-init.exe来安装。

安装完成后,重启你的终端,运行rustc --version来验证安装。

编写第一个Rust程序

打开你的文本编辑器,创建一个新文件,命名为main.rs,并输入以下代码:

fn main() {

println!("Hello, World!");

}

这段代码定义了一个名为main的函数,这是每个可执行Rust程序的入口点。println!是一个宏,用于将文本输出到控制台。

编译和运行

保存文件后,打开终端,切换到文件所在目录,运行以下命令来编译:

rustc main.rs

这将生成一个可执行文件。在Unix-like系统上,你可以通过./main来运行它,在Windows上则直接运行main.exe。你应该会看到控制台输出了Hello, World!。

探索Cargo

Cargo是Rust的构建系统和包管理器,它可以帮助我们管理依赖、编译项目和发布代码。让我们使用Cargo来创建一个新的项目:

cargo new hello_world

cd hello_world

这会创建一个新的目录hello_world,其中包含一个Cargo.toml文件和一个src目录,src目录中有一个main.rs文件,文件内容已经包含了Hello, World!的代码。

在项目目录中,运行cargo build,Cargo会编译项目并生成可执行文件在target/debug目录下。使用cargo run可以直接编译并运行程序。

理解Rust的基本概念

变量和可变性

默认情况下,Rust中的变量是不可变的。这意味着一旦一个值被绑定到一个变量名上,你就不能改变这个值。要使变量可变,可以使用mut关键字。

let mut x = 5;

println!("The value of x is: {}", x);

x = 6;

println!("The value of x is: {}", x);

数据类型

Rust是一种静态类型语言,这意味着所有变量的类型都必须在编译时已知。Rust有多种数据类型,这里我们介绍两个基础的:标量和复合。

  1. 标量类型:代表一个单一的值,如整数、浮点数、布尔值和字符。
  2. 复合类型:可以将多个值组合成一个类型,比如元组(tuple)和数组(array)。

所有权

所有权是Rust最独特的特性之一,它使得Rust无需垃圾回收就能保证内存安全。所有权规则如下:

  1. 每个值都有一个被称为其所有者的变量。
  2. 值在任何时候只能有一个所有者。
  3. 当所有者离开作用域,这个值将被丢弃。

结语

今天,我们介绍了Rust的安装过程、编写和运行Hello World程序、Cargo的基本使用,以及Rust的一些基本概念。Rust的学习曲线可能比较陡峭,但它的安全保证和强大的性能是值得的。希望这篇文章能为你的Rust学习之旅提供一个良好的起点。

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

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

相关文章

【C语言】深入解开指针(二)

🌈write in front :🔍个人主页 : 啊森要自信的主页 🌈作者寄语 🌈: 小菜鸟的力量不在于它的体型,而在于它内心的勇气和无限的潜能,只要你有决心,就没有什么事情是不可能的…

HTTP——

HTTP 请求报文的构成 如下图: 第一行:HTTP请求的方法,具体是POST方法还是GET方法,或是其它方法;URI就是你的HTTP请求的路径;后面是HTTP协议的版本; 第二行往下连续多行:这些是请求头部分,也就是请求的首部设置的一些信息,相当于对HTTP请求的一些设置; 空格行:在…

Javaweb之javascript事件的详细解析

1.6 JavaScript事件 1.6.1 事件介绍 如下图所示的百度注册页面,当我们用户输入完内容,百度可以自动的提示我们用户名已经存在还是可以使用。那么百度是怎么知道我们用户名输入完了呢?这就需要用到JavaScript中的事件了。 什么是事件呢&…

仿京东拼多多商品分类页-(RecyclerView悬浮头部实现、xml绘制ItemDecoration)

文章目录 前言效果图思路方式一:通过xml布局来实现方式二:通过ItemDecoration方式来实现 实现步骤1、数据项格式2、左侧列表适配器3、右侧列表适配器4、头部及悬浮头部绘制4.1头部偏移高度为要绘制xml布局的高度--getItemOffsets()4.2 绘制固定头部--onD…

互联网Java工程师面试题·微服务篇·第二弹

目录 18、什么是 Spring 引导的执行器? 19、什么是 Spring Cloud? 20、Spring Cloud 解决了哪些问题? 21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处? 22、你能否给出关于休息和微服务的要点? 23、…

Crypto | Affine password 第二届“奇安信”杯网络安全技能竞赛

题目描述: 明文经过仿射函数y3x9加密之后变为JYYHWVPIDCOZ,请对其进行解密,flag的格式为flag{明文的大写形式}。 密文: JYYHWVPIDCOZ解题思路: 1、使用在线网站直接破解或手工计算破解,获得flag。&#xf…

【ARM Trace32(劳特巴赫) 使用介绍 4 - Trace32 Discovery 详细介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 SYS.Detect1.2 AHBAPn/AXIAPnAPBAPn.Base1.1 SYS.Detect 在 TRACE32 中, SYS.Detect 是一个用来检测目标系统配置的命令。 当你执行 SYS.Detect DAP 命令时,TRACE32 将自动检测和识别目标系统上的 ARM De…

lc307.区域和检索 - 数组可修改

暴力解法 创建方法,通过switch-case判断所需要调用的方法。 public class RegionsAndSertches {public static void main(String[] args) {String[] str new String[]{"NumArray", "sumRange", "update", "sumRange"};i…

DevEco Studio开发工具下载、安装(HarmonyOS开发)_For Mac

一、说明 初学HarmonyOS开发,DevEco Studio开发工具的安装和使用是必须的。 (注:不多废话,跟着下面流程操作下载、安装DevEco Studio即可。) 二、下载DevEco Studio 1.官网下载地址: https://developer.…

全域全自主建设,亚信科技AntDB数据库助力广电5G业务上线运行

自2019年6月,中国广电成功获得5G牌照以来,迅速推进网络建设目标,成为5G网络覆盖广、应用场景多、用户体验出色的第四大运营商。其依托全球独有的700MHz频谱资源,具备覆盖能力强、容量足、速率高的优势。通过不断深化和中国移动的共…

数据复现-企业数字化转型与中国实体经济发展分析

数据简介:在当今快速发展的数字化时代,数字技术已经成为企业数字化转型的核心驱动力之一。尤其对于中国这样一个拥有庞大实体经济的国家而言,结合数字技术的应用,可以为企业带来前所未有的巨大机遇和挑战。在中国,实体…

5 Paimon数据湖之表数据查询详解

更多Paimon数据湖内容请关注:https://edu.51cto.com/course/35051.html 虽然前面我们已经讲过如何查询Paimon表中的数据了,但是有一些细节的东西还需要详细分析一下。 首先是针对Paimon中系统表的查询,例如snapshots\schemas\options等等这些…