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

news2024/9/24 11:31:11

在这里插入图片描述

教程目录

  • 前言
  • 一,Rust简介
    • 1,Rust的历史
    • 2,Rust的特性
    • 3,为什么选择Rust
    • 4,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,都是一流的。

4,Rust可以做什么

Rust作为一种系统级的编程语言,具有许多强大的特性,使其可以被用于许多不同的应用领域。以下是其中的一些:

  1. 系统编程:Rust提供了低级别的性能控制和高级别的抽象,使其成为系统编程的理想选择。可以使用Rust编写操作系统,文件系统,浏览器引擎等。

  2. Web 开发:Rust有一些高性能的Web框架,如Rocket和Actix,可以用来开发Web应用。并且,Rust可以编译成WebAssembly,这使得它可以在Web浏览器中运行,提供了比JavaScript更高的性能。

  3. 游戏开发:Rust的性能和内存安全性使其成为游戏开发的一个好选择。Rust的游戏开发生态系统正在快速增长,有许多库和框架可供开发者使用。

  4. 嵌入式系统:Rust的零成本抽象和C的兼容性使其成为嵌入式系统的一个优秀选择。Rust的内存安全性也有助于降低嵌入式系统的错误率。

  5. 并行和并发编程:Rust的所有权和借用机制可以防止数据竞争,使得在Rust中编写并行和并发代码变得简单且安全。

  6. 网络编程:Rust的性能和内存安全性使其成为编写网络应用,如HTTP服务器,数据库等的好选择。在此领域,有许多优秀的Rust库和框架可供使用。

  7. 跨平台开发:Rust支持多种平台,包括Windows, macOS, Linux, Android, iOS等,可以编写跨平台的应用程序。

总的来说,Rust是一种通用的编程语言,可以被应用在许多不同的领域,无论是底层的系统编程,还是高级的Web开发,Rust都是一个好的选择。

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/810642.html

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

相关文章

谈谈3D打印技术

目录 1.什么是3D打印 2.3D打印与传统打印技术的不同之处 3. 3D打印带来的技术变革 1.什么是3D打印 3D打印技术,也称为增材制造(Additive Manufacturing),是一种将数字模型转化为实体物体的制造方法。它通过逐层添加材料的方式&a…

一文了解MySQL中的多版本并发控制

在开始之前,先抛出一个问题:我们都知道,目前(MySQL 5.6以上)数据库已普遍使用InnoDB存储引擎,InnoDB相对于MyISAM存储引擎其中一个好处就是在数据库级别锁和表级别锁的基础上支持了行锁,还有就是…

windows环境安装elasticsearch+kibana并完成JAVA客户端查询

下载elasticsearch和kibana安装包 原文连接:https://juejin.cn/post/7261262567304298554 elasticsearch官网下载比较慢,有时还打不开,可以通过https://elasticsearch.cn/download/下载,先找到对应的版本,最好使用迅…

24考研数据结构-第二章:线性表

目录 第二章:线性表2.1线性表的定义(逻辑结构)2.2 线性表的基本操作(运算)2.3 线性表的物理/存储结构(确定了才确定数据结构)2.3.1 顺序表的定义2.3.1.1 静态分配2.3.1.2 动态分配2.3.1.3 mallo…

MacOS Monterey VM Install ESXi to 7 U2

一、MacOS Monterey ISO 准备 1.1 下载macOS Monterey 下载🔗链接 一定是 ISO 格式的,其他格式不适用: https://www.mediafire.com/file/4fcx0aeoehmbnmp/macOSMontereybyTechrechard.com.iso/file 1.2 将 Monterey ISO 文件上传到数据…

更简单的读取和存储对象 (Bean)

怎样才能比之前更简单的 读取和存储对象 (Bean) 呢? 答: 就两个字"使用注解", 接下来就说说如何利用注解来更简单的操作 Bean 目录 一. 前置工作 (配置扫描路径) 二. 使用注解存储 Bean 2.1 注解介绍 2.1.1 类注解存储 Bean 的默认命名规则 2.2 Controller (控…

手把手移植 simpleFOC (四):pwm 六相 篇

文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 今天移植的内容,为定时器生在pwm,能按矢量数据控制电机到相应的位置 一、定时器的配置 通读了simpleFoc的代码,准备让定时器1生成的pwm波…

【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中

文章目录 前言导入依赖库打开文件准备写入数据循环爬取多个页面完整代码运行效果结束语 前言 这篇文章介绍了如何使用 Python 爬虫技术获取代理IP并保存到文件中。通过使用第三方库 requests 发送HTTP请求,并使用 lxml 库解析HTML,我们可以从多个网页上…

要单片机和RTOS有必要学习嵌入式linux吗?

学习嵌入式 Linux 是否有必要,取决于你的项目需求和职业发展目标。以下是一些考虑因素: 项目需求:如果你的项目需要处理复杂的网络、文件系统、多任务管理等功能,嵌入式 Linux 可能是更适合的选择。Linux 提供了丰富的开源软件包和…

生成对抗网络DCGAN实践笔记

在AI内容生成领域,有三种常见的AI模型技术:GAN、VAE、Diffusion。其中,Diffusion是较新的技术,相关资料较为稀缺。VAE通常更多用于压缩任务,而GAN由于其问世较早,相关的开源项目和科普文章也更加全面&#…

华为OD机试真题2022Q4 A + 2023 B卷(Java)

大家好,我是哪吒。 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题。 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧。B卷新题库正在更…

微服务 - Consul集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡

一、Consul 概括 Consul 是由N多个节点(台机/虚机/容器)组成,每个节点中都有 Agent 运行着,各节点间用RPC通信,所有节点内相同的 Datacenter 名称为一个数据中心,节点又分三种角色 Client/Server/Leader: Agent&…

Python算法笔记(3)-树、二叉树、二叉堆、二叉搜索树

树和二叉树 什么是树 树是一种非线性的数据结构,由n个节点构成的有限集合,节点数0的树叫空树,在任意一棵树中,有且仅有一个特点的称为根节点,当N>1时,其余节点可分m为互不相交的有限集。 例如如下&…

子序列,回文串相关题目

class Solution { public:int dp[2510];int lengthOfLIS(vector<int>& nums) {//dp[i]表示以nums[i]为结尾的最长子序列的长度int nnums.size();for(int i0;i<n;i){dp[i]1;}for(int i1;i<n;i){for(int j0;j<i;j){if(nums[i]>nums[j]){dp[i]max(dp[i],dp[…

因子分解机介绍和PyTorch代码实现

因子分解机&#xff08;Factorization Machines&#xff0c;简称FM&#xff09;是一种用于解决推荐系统、回归和分类等机器学习任务的模型。它由Steffen Rendle于2010年提出&#xff0c;是一种基于线性模型的扩展方法&#xff0c;能够有效地处理高维稀疏数据&#xff0c;并且在…

用Blender做一个足球烯C60

文章目录 作图思路先做一个足球球棍模型平滑 Blender初学者入门&#xff1a;做一个魔方 作图思路 C 60 C_{60} C60​是由60个碳原子构成&#xff0c;形似足球&#xff0c;又名足球烯。而足球的顶点&#xff0c;可以通过正二十面体削去顶点得到&#xff0c;原理可参照这篇&…

基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

React组件进阶之children属性,props校验与默认值以及静态属性static

React组件进阶之children属性,props校验与默认值以及静态属性static 一、children属性二、props校验2.1 props说明2.2 prop-types的安装2.3 props校验规则2.4 props默认值 三、静态属性static 一、children属性 children 属性&#xff1a;表示该组件的子节点&#xff0c;只要组…

网站创建004:跟用户交互的标签

input 系列&#xff1a; <body><input type"text" /> <!--文本输入框--><input type"password" /> <!--密码输入框--><input type"checkbox" /> <!--复选框--><input type"checkbox"…

【MySQL】使用C语言连接

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《零基础入门MySQL》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;my…