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

news2024/10/5 19:09:56

在这里插入图片描述

教程目录

  • 前言
  • 一,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/832146.html

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

相关文章

无头单链表,有完整测试程序

&#x1f35f;无头单链表 &#x1f47b;无头单链表的所有结点都存储有效信息 &#x1f47b;无头单链表相对带头单链表&#xff0c;在有些涉及更改头节点的函数上需要传二级指针 &#x1f35f;头文件list.h #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #includ…

不能乱点链接之获取cookie

这里是浏览器存储的某个网址的cookie 然后点击了链接就把参数获取到 因为document.cookie 会直接获取到浏览器cookie 所以为了拦截 存cookie的时候要设置&#xff1a; 设置httpOnly 只要http协议能够读取和携带 再document.cookie 就为空了 原文链接&#xff1a; 尚硅谷课程…

后端整理(MySql)

1 事务 1.1 事务ACID原则 原子性&#xff08;Atomicity&#xff09; 事务的原子性指的是事务的操作&#xff0c;要么全部成功&#xff0c;要么全部失败回滚 一致性&#xff08;Consistency&#xff09; 事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性…

SolidUI社区-从开源社区角度思考苹果下架多款ChatGPT应用

文章目录 背景下架背景下架原因趋势SolidUI社区的未来规划结语如果成为贡献者 背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目…

Typescript中的元组与数组的区别

Typescript中的元组与数组的区别 元组可以应用在经纬度这样明确固定长度和类型的场景下 //元组和数组类似&#xff0c;但是类型注解时会不一样//元组赋值的类型、位置、个数需要和定义的类型、位置、个数完全一致&#xff0c;不然会报错。 // 数组 某个位置的值可以是注解中的…

小白到运维工程师自学之路 第六十五集 (docker-compose)

一、概述 Docker Compose 的前身是 Fig&#xff0c;它是一个定义及运行多个 Docker 容器的工具。可以使用YAML文件来配置应用程序的服务。然后&#xff0c;使用单个命令&#xff0c;您可以创建并启动配置中的所有服务。Docker Compose 会通过解析容器间的依赖关系&#xff08;…

纷享销客携30+企业家朋友走进国产燃气轮机领军企业——新奥动力

7月26日下午&#xff0c;【数字中国-高效增长】名城优企游学系列活动之走进新奥动力成功举办&#xff01;新奥动力是国产燃气轮机领军企业&#xff0c;成立于2013年&#xff0c;致力于成为国际领先的微、小型燃气轮机制造商&#xff0c;其多项技术、产品填补国内空白。2022年新…

算法通关村—迭代实现二叉树的前序,中序,后序遍历

1. 前序中序后序递归写法 前序 public void preorder(TreeNode root, List<Integer> res) {if (root null) {return;}res.add(root.val);preorder(root.left, res);preorder(root.right, res);}后序 public static void postOrderRecur(TreeNode head) {if (head nu…

基于Web智慧森林防火GIS监测预警可视化系统

森林火灾是森林最危险的敌人&#xff0c;也是林业最可怕的灾害&#xff0c;它会给森林带来毁灭性的后果。 建设背景 森林火灾&#xff0c;重在预防。随着现代技术的快速发展&#xff0c;数字化森林监控已成为及早发觉&#xff0c;排除森林火灾隐情的必要手段。充分利用现代科…

C++ 指针数组

如果一个数组的每个元素都是指针变量&#xff0c;这个数组就是指针数组。指针数组的每个元素都必须是同一类型的指针。 1.一维指针数组 声明一维指针数组的语法形式&#xff1a; 数据类型*数组名[下标表达式];下标表达式指出数组元素的个数&#xff0c;数据类型确定每个元素…

【雕爷学编程】MicroPython动手做(29)——物联网之SIoT

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

浙大数据结构第六周之06-图3 六度空间

题目详情&#xff1a; “六度空间”理论又称作“六度分隔&#xff08;Six Degrees of Separation&#xff09;”理论。这个理论可以通俗地阐述为&#xff1a;“你和任何一个陌生人之间所间隔的人不会超过六个&#xff0c;也就是说&#xff0c;最多通过五个人你就能够认识任何一…

动手学深度学习—卷积神经网络(原理解释+代码详解)

目录 1. 从全连接层到卷积层2. 图像卷积2.1 互相关运算2.2 卷积层2.3 图像中目标的边缘检测2.4 学习卷积核2.5 特征映射和感受野 3. 填充和步幅3.1 填充3.2 步幅 4. 多输入多输出通道4.1 多输入通道4.2 多输出通道4.3 11卷积核 5. 汇聚层5.1 最大汇聚层和平均汇聚层5.2 填充和步…

Stable Diffusion - SDXL 模型测试 (DreamShaper 和 GuoFeng v4) 与全身图像参数配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132085757 图像来源于 GuoFeng v4 XL 模型&#xff0c;艺术风格是赛博朋克、漫画、奇幻。 全身图像是指拍摄对象的整个身体都在画面中的照片&…

Bean的实例化方法

目录 1.工厂模式通常有三种形态&#xff1a; 2.简单工厂 2.1 静态工厂 2.1通过factory-bean实例化 2.3通过FactoryBean接口实例化 3.测试 关于容器的使用 3.1获得spring文件方式 3.2getBean方式 4.关闭容器 1.工厂模式通常有三种&#xff1a; 第一种&#xff1a;简单工…

二叉树题目:叶子相似的树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;叶子相似的树 出处&#xff1a;872. 叶子相似的树 难度 3 级 题目描述 要求 考虑一个二叉树上所有的叶子&…

消息队列项目(1)

概念 这里的消息队列, 大致上就是一个生产者消费者模型. 我这个消息队列是仿照 RabbitMQ 的实现原理来进行编写的 需求分析 有几个核心的概念: 生产者(Producer)消费者(Consumer)中间人(Broker)发布(Publish) :生产者向中间人投递消息的过程订阅(Subcribe) :记录哪些消费者…

Java面试题 如何提高自己的算法?

练习一&#xff1a;飞机票 需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&#xff0c;经济舱8.5折&#xff0c;淡季&#xff08;11月到来年4月&a…

【Java可执行命令】(十五)Java进程状态信息获取工具 jps:获取和监控Java进程的状态信息 ~

Java可执行命令之jps 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 可选参数&#xff1a;-q3.3 可选参数&#xff1a;-m3.4 可选参数&#xff1a;-l3.5 可选参数&#xff1a;-v3.6 可选参数&#xff1a;-V 4️⃣ 应用场景&#x1f33e; 总结 1️⃣ 概念 JPS&#xff…

【BEV感知】1-BEV感知算法介绍

1-BEV感知算法介绍 1 什么是BEV感知算法&#xff1f;1.1 什么是BEV&#xff1f;1.2 什么是感知&#xff1f;1.3 什么是算法&#xff1f;1.4 什么是BEV感知&#xff1f; 1 什么是BEV感知算法&#xff1f; 1.1 什么是BEV&#xff1f; Bird’s-Eye-View&#xff0c;尺度变化小、…