【Rust教程 | 基础系列 | Rust初相识】Rust简介与环境配置

news2024/9/28 9:22:25

在这里插入图片描述

教程目录

  • 前言
  • 一,Rust简介
    • 1,Rust的历史
    • 2,Rust的特性
    • 3,为什么选择Rust
  • 二, Rust环境配置
    • 1,windows11安装
    • 2,Linux安装
  • 三,安装IDE

前言

Rust是一种系统编程语言,专注于速度、内存安全和并行性。它的设计目标是提供一种能够实现高性能系统的语言,同时保证内存安全和线程安全。

本篇教程的目标是通过融合理论与实践,帮助读者更快速、更有效地学习 Rust,并解决在学习过程中可能遇到的挑战。这些内容也是我个人学习过程中的笔记记录,希望正在学习和准备学习 Rust 的朋友们可以一起学习探讨。本文的主要目标是阐述学习 Rust 的重要性,以及如何建立 Rust 的开发环境。


一,Rust简介

1,Rust的历史

Rust的开发始于2006年,由Mozilla研究院的Graydon Hoare发起。2010年,Mozilla开始赞助这个项目,希望Rust能够成为开发Web浏览器和其他复杂软件的工具。经过多年的发展,Rust已经成为了一种成熟的编程语言,被广泛应用于各种系统级的开发工作。

2,Rust的特性

  1. 零成本抽象:Rust提供了高级语言的抽象,但不会因此带来运行时的性能损失。这得益于Rust的零成本抽象原则,即在不影响性能的前提下,提供尽可能多的抽象。

  2. 内存安全:Rust的一个核心特性就是内存安全,它通过一种称为所有权(ownership)的系统来管理内存。这个系统在编译时检查内存访问,确保没有空指针解引用、双重释放等问题,而不需要垃圾回收。

  3. 并发无恐:Rust通过一种称为借用检查(borrow checking)的机制来防止数据竞争。这使得在Rust中编写并发代码既安全又容易。

  4. C兼容:Rust提供了C语言的兼容性,可以无缝地与C语言库一起工作,也可以在嵌入式系统和操作系统内核等场景中使用。

3,为什么选择Rust

选择Rust的原因有很多,以下是其中的一些:

  1. 性能:Rust的性能与C和C++相当,但提供了更高级的抽象和更强的安全保证。

  2. 内存安全:Rust的所有权系统和借用检查机制可以在编译时消除许多常见的内存错误。

  3. 并发:Rust的并发模型使得编写高效的并发代码变得更加简单。

  4. 生态系统:Rust有一个活跃的社区和一个快速增长的生态系统,有许多高质量的库可以使用。

  5. 工具链:Rust的工具链,包括包管理器Cargo和文档工具rustdoc,都是一流的。

Rust是一种强大、安全、并发的系统编程语言,它的设计理念和丰富的特性使得它在系统编程领域有着广泛的应用前景。如果你对高性能、内存安全和并发编程感兴趣,那么Rust无疑是一个值得学习的选择。

Rust不仅限于低级系统编程。它的表现力和人体工程学足以让CLI应用程序、Web服务器和许多其他类型的代码编写起来非常愉快,使用Rust可以让你建立从一个领域转移到另一个领域的技能,你可以通过编写一个Web应用程序来学习Rust,然后将这些相同的技能应用于树莓派(Raspberry Pi,属于嵌入式方面)开发。

今年一直在被AI改变着各种事情,希望Rust的通用性能成为AI时代的通用语言。


二, Rust环境配置

1,windows11安装

官网下载链接,在官网选择合适的版本下载。
在这里插入图片描述


在终端执行下载的rustup-init.exe文件,如果没有提前安装Microsoft C++ 生成工具,会弹出如下界面,先安装Microsoft 工具,Select option选择1即可
在这里插入图片描述


默认会弹出Visual Studio界面。默认安装即可。
在这里插入图片描述
安装完成后,再次运行rustup-init.exe文件,如果弹出如下界面,说明Microsoft 工具安装成功,接下来可进行Rust的安装。
在这里插入图片描述
等待安装完成,在终端查看版本号,正常显示则安装成功
在这里插入图片描述

2,Linux安装

linux安装比windows安装方便很多,只需要一条命令,我这里使用的国产系统deepin,在终端输入以下命令

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

在这里插入图片描述
安装完成后在终端打印版本号查看是否安装成功
在这里插入图片描述


三,安装IDE

在配置好Rust环境之后,需要安装合适的IDE,虽然Rust可以在任何文本编辑器中编写,但是一个好的IDE可以极大地提高编程效率。本教程均采用VS Code进行讲解。

VS Code下载地址,windows,linux均可下载。
在这里插入图片描述

VS Code是一个轻量级的编辑器,通过安装Rust插件,也可以成为一个强大的Rust开发工具。在VS Code的扩展市场中搜索Rust,并安装Rust 插件。
在这里插入图片描述


在安装和配置IDE后,需要创建一个新的Rust项目。在终端中,使用cargo,Rust的包管理器和构建工具,可以很容易地创建一个新项目。只需运行以下命令:

cargo new hello_world

这将会创建一个名为hello_world的新项目,其中包含了基本的目录结构和一个简单的"Hello, World!"程序。
在这里插入图片描述


以上就是Rust的简介和环境配置的基本步骤。在完成这些步骤后,就可以开始Rust的学习之旅了。下一章我们将介绍cargo的相关内容

有学习Rust的小伙伴,欢迎一起交流。

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

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

相关文章

【深度学习】以图搜索- 2021sota repVgg来抽取向量 + facebook的faiss的做特征检索, 从环境搭建到运行案例从0到1

文章目录 前言安装小试牛刀用repVgg抽取向量构建Faiss索引进行相似性搜索项目延伸总结 前言 Faiss的全称是Facebook AI Similarity Search。 这是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法。 暴力检索耗时巨大,对于…

Flowable-任务-用户任务

定义 顾名思义,用户任务是需要人工参与处理的。当流程执行到用户任务节点时,流程引擎会给指指定的用户(办理人或候选人)或一组用户(候选组)创建待处理的任务项,等待用户的处理。 用户任务的参与…

HTML一些基础知识

1、Web标准:主要包含结构、表现、行为。结构用于对网页元素进行整理和分类,主要指HTML。表现用于设置网页元素的板式、颜色、大小等外观样式,主要指的是CSS。行为主要指的是网页模型的定义以及交互的编写,主要是js文件。 Html相当…

AddForce

ForceMode: Force:关注的是力整体 Impulse:关注的是冲量,与质量相关 VelocityChange:关注的是速度,与质量无关 Acceleration:关注的是加速度,与质量无关 public void AddForce…

前后端分离实现博客系统

文章目录 博客系统前言1. 前端1.1 登陆页面1.2 博客列表页面1.3 博客详情页面1.4 博客编辑页面 2. 后端2.1 项目部署2.1.1 创建maven项目2.1.2 引入依赖2.1.3 创建目录结构2.1.4 部署程序 2.2 逻辑设计2.2.1 数据库设计2.2.2 实体类设计2.2.3 Dao层设计2.2.3.1 BlogDao 2.2.4 D…

Intel RealSense D455(D400系列) Linux-ROS 安装配置(亲测可用)

硬件:Intel RealSense D455 系统:Ubuntu 18.04 Part_1: 安装librealsense SDK2.0 1.1 注册密钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE或者 sudo apt-key adv --keyserver hkp:/…

Mysql定时删除表数据

由于用户环境有张日志表每天程序都在狂插数据,导致不到一个月时间,这张日志表就高达200多万条记录,但是日志刷新较快,里面很多日志没什么作用,就写了个定时器,定期删除这张表的数据。 首先查看mysql是否开启…

【Linux】进程间通信——system V共享内存 | 消息队列 | 信号量

文章目录 一、system V共享内存1. 共享内存的原理2. 共享内存相关函数3. 共享内存实现通信4. 共享内存的特点 二、system V消息队列(了解)三、system V信号量(信号量) 一、system V共享内存 1. 共享内存的原理 共享内存是一种在…

自动化测试Junit(测试系列8)

目录 前言: 1.什么是Junit 2.Junit相关的技术 2.1注解 2.1.1Test 2.1.2Disable 2.1.3BeforeAll和AfterAll 2.1.4BeforeEach和AfterEach 2.2参数化 2.2.1单参数 2.2.2多参数 2.2.2.1CSV获取参数 2.2.2.2方法获取参数 2.3测试套件 2.3.1通过class运行测…

Java工程师研学之路【002Java基础语法上】

知识体系(Knowledge system) 练习(practice) 要求:从控制台输入两个数字,然后输出两个数字的求和结果。 import java.util.Scanner; public class HelloJava {public static void sum(){System.out.print…

kafka集群搭建(Linux环境)

zookeeper搭建,可以搭建集群,也可以单机(本地学习,没必要搭建zookeeper集群,单机完全够用了,主要学习的是kafka) 1. 首先官网下载zookeeper:Apache ZooKeeper 2. 下载好之后上传到…

以数据要素为支点,兴业银行撬动企业“技术杠杆”

文 | 螳螂观察 作者 | 李永华 推荐理财产品,恰好符合客户能承受的风险水平和想要的收益率水平,在资金投入上也契合客户当下的财务安排,于是顺利成交; 为客户办理的信用卡,优惠的场景方向与客户常常消费的领域大体一…

RWEQ模型教程

详情点击链接:基于“RWEQ”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写 前沿 土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的…

U盘安装CentOS7.9出错:进入 dracut问题和解决方法

U盘安装CentOS7.9出错:进入 dracut问题和解决方法 原因:U盘名称未识别, 解决:进入启动界面,按e进入编辑界面 修改: vmlinuz initrdinitrd.img inst.stage2hd:LABELCentOS\x207\x20x86_64.check quiet 为 …

前端框架学习-Vue(二)

最近在学习Vue框架,Vue中的内容很多。相当于把之前后端的MVC,V层转移到前端来编写和部署。下面是学习Vue时的大纲。 Vue生命周期是Vue应用的生命周期Vue脚手架,即vue-cli,使用node.js 来创建和启动vue项目Vue组件知识,…

java重试机制实现方案

本文内容是目前团队内小磊同学对重试机制实现方案的梳理总结。 从为什么需要重试的背景开始,到重试的场景,大致的一些设计思路,最后通过两个成熟的retry组件进行案例讲解,理论实战。 背景 重试是系统提高容错能力的一种手段。在一…

Windows下Nginx安装与配置教程

一、前言 1、Nginx是什么? Nginx是一个开源的Web服务器,同时Nginx也提供了反向代理和负载均衡的功能。 Nginx通常作为负载均衡器暴露在外网接受用户请求,同时也使用其反向代理的功能,将用户的请求转发到实际提供服务的内网服务器…

带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)

带wiringPi库的交叉编译如何进行 先交叉编译wiringPi库,编译出的库适合香橙派,这时候交叉编译可执行程序的平台和链接库的格式也是正确的,然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置,但是现在还没有学习过&#xf…

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…

加解密相关工具网站总结

加解密相关工具&网站总结 文章目录 加解密相关工具&网站总结CMD5,解密,反向查询JSFuck(JavaScriptAAEncode加密/解密(Javascript在线CTF编码工具开源加解密工具大佬文章:1.30余种加密编码类型的密文特征分析2.…