Rust语言基础:从Hello World开始

news2024/12/28 20:15:29

大家好,我是[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.coloradmin.cn/o/1204283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(11.13 知识总结(路由层)

一、路由层 1.1路由匹配 1.1.1 什么是路由? 路由可以看成是跟在 ip 和 port 之后的地址 1.1.2 url( ) 方法 # 示例 urlpatterns [ url(r^admin/, admin.site.urls), url(r^login/, views.login_func), url(r^register/$, views.register_func), ] url…

计算机毕业设计选题推荐-课程学习微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Jmeter 性能 —— 负载阶梯场景!

1、安装阶梯测试的第三方插件->搜jpgc 选项-JMeter Plugins Manager -搜jpgc 空格,然后安装 2、脚本-线程组选jpgc Stepping Thread Group 最终并发数为100,并发数从0开始,5秒内增加10个并发数,增加10个后持续30s,…

基于RK3399的室内健身魔镜方案

I 方案背景 一、健身魔镜的兴起 2020年疫情席卷全球,宅家是防疫的措施之一,因而宅家运动火爆,随之而来的宅家运动器材也风靡起来,其中包含既有颜值又具有多种功能的健身魔镜。 Ⅱ 方案介绍 一、健身魔镜的方案介绍 …

文件上传 [SUCTF 2019]CheckIn1

打开题目 我们用cmd curl --head url 查看网站使用的是什么服务器 此题用的是openresty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台 我们上传php,phtml的一句话木马都显示不合法 那我们试试传a.jpg的一句话木马 显示我们一句话木马内容里面…

[C++ 从入门到精通] 12.拷贝构造函数

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

22.能被7整除,并且求和。

#include<stdio.h>int main(){int i ,sum0;printf("1-1000能被7整除的数字有&#xff1a;\n");for(i1;i<1000;i){if(i%70){printf("%d ",i);sumsumi;} }printf("\n");printf("能被7整除的数字的和是&#xff1a;%d ",sum);re…

stm32 WIFI模块_8266使用

使用以上配置可以正常回应&#xff0c;其中无论勾选或者不勾选DTR/RTS都可以得到正常回应 ATCWMODE?表示查询当前WiFi状态是处于热点模式&#xff08;AP模式&#xff09;或者是连接其他WiFi的那个模式。通过图片看出这个符号不能省略。 设置AP热点命令格式&#xff1a;ATCWSAP…

手写线性表C++ vector

目录 一、vector基本概念 1.1、构造函数 1.2、析构函数 1.3、插入元素 1.4、删除元素 1.5、重载运算符 二、完整代码 一、vector基本概念 C中的vector是一种动态数组&#xff0c;它可以根据需要自动调整大小。vector是C标准模板库&#xff08;STL&#xff09;中的一个容…

通信原理板块——线性分组码之汉明码

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、汉明码 (1)常见概念 代数码&…

2756基于微信小程序的图书商城系统

摘要 本文将详细介绍基于微信小程序的图书商城系统的设计和实现。该系统包括服务器端和客户端两部分&#xff0c;能够满足管理员和普通用户的需求。通过对用户需求和功能的分析&#xff0c;本文将详细阐述系统设计的关键环节&#xff0c;包括数据库设计和界面设计。最后&#…

C语言ZZULIOJ1148:组合三位数之一

题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数&#xff0c;要求每个数字仅使用一次&#xff0c;使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入:无 输出:按从小到大的顺序输出这三个三位数&#xff0c;由空格隔开。输出占一行。 提示 若一个数能表…

select在标准输出和套接字上进行监控

selectServerInTCPIPbook.c的内容如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/time.h> #include <sys/…

教育局档案室智慧档案库房建设方案

教育局档案室智慧档案库房建设是指教育局为了更好地保存和管理学校、教师、学生等相关档案资料&#xff0c;以及保证这些档案资料的安全性、可靠性和完整性&#xff0c;而建设的一个专门的存储、管理和保护档案资料的场所。 专久智能提供的教育局档案库房建设方案从以下几个方面…

高密度统一存储在影视后期剪辑媒资应用中的优势

影视媒体行业是存储技术发展的重要推动力。Infortrend一直专注于存储的研发&#xff0c; EonStor GS 横向扩展统一存储是适合影视应用的解决方案&#xff0c;高密度机型性能卓越&#xff0c;扩展性高&#xff0c;数据保护技术安全可靠。非常具有性价比&#xff0c;在保证性能和…

msvcp71.dll,msvcr71.dll丢失的最简单的解决方法

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是MSVCR71.dll缺失。这个问题可能会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。本文将介绍5个修复MSVCR71.dll缺失的方案&#xff0c;帮助用户解决这一问题。 一、重新安装相关…

U盘怎么加密?U盘数据该怎么加密?

在使用U盘的过程中&#xff0c;我们会将很多重要数据存放在电脑中&#xff0c;但为了保护文件的安全性&#xff0c;我们需要使用加密来进行保护。那么&#xff0c;U盘数据该怎么加密呢&#xff1f; U盘数据加密方法 想要将普通U盘变成加密U盘&#xff0c;我们需要使用专业的U盘…

如何防止听力下降?

听力受损是不可逆的&#xff0c;一旦听力下降了是无法恢复的&#xff0c;所以当我们出现听力障碍的时候&#xff0c;我们更应该注意我们的耳朵&#xff0c;想想如何能保护我们的残余听力&#xff01; 今天来告诉大家&#xff0c;哪些事是有易于听力的&#xff0c;一起来看看吧…

企业数据备份方案:如何选择适合企业的备份方法?

企事业单位通常配备文件服务器以存储涉及单位无形资产和商业机密的重要数据文件。尽管许多文件服务器配备了Raid以防止数据丢失风险&#xff0c;但员工恶意访问或黑客入侵仍可能导致数据的删除、恶意修改或加密。因此&#xff0c;为维护数据安全&#xff0c;企业需要及时备份操…

nodejs express vue uniapp电影购票系统源码

开发技术&#xff1a; node.js&#xff0c;vscode&#xff0c;HBuilder X express vue elementui uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索电影&#xff0c;轮播图&#xff0c;电影分类&#xff0c;最近上架电影 点击电影进入电影详情&am…