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

在这里插入图片描述

教程目录

  • 前言
  • 一,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.mzph.cn/news/13704.shtml

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

相关文章

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

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

Linux 之 systemctl

systemctl 可以控制软件(一般指服务)的启动、关闭、开机自启动 能被systemctl 管理的软件,一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件,如果 自动注册了 可被systemctl 控制第三方软件,如果没有自动…

【业务功能篇60】Springboot + Spring Security 权限管理 【终篇】

4.4.7 权限校验扩展 4.4.7.1 PreAuthorize注解中的其他方法 hasAuthority:检查调用者是否具有指定的权限; RequestMapping("/hello")PreAuthorize("hasAuthority(system:user:list)")public String hello(){return "hello Sp…

【AutoGluon_03】保存模型并调用模型

在训练好autogluon模型之后,可以将模型进行保存。之后当有新的数据需要使用autogluon进行预测的时候,就可以直接加载原来训练好的模型进行训练。 import pandas as pd from sklearn.model_selection import train_test_split from autogluon.tabular im…

SpringSecurity的实现

SpringSecurity的实现 1.依赖 security起步依赖 redis起步依赖 fastjson jjwt生成token mybatis-plus起步依赖 mysql连接 web起步 test起步 <!-- security启动器 --><dependency><groupId>org.springframework.boot</groupId><arti…

【Unity细节】关于NotImplementedException: The method or operation is not implemented

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐关于NotImplementedException: The method or operation is not implemented.⭐…

ReID网络:MGN网络(1) - 概述

Start MGN 1. 序言 现代基于感知的信息中&#xff0c;视觉信息占了80~85%。基于视觉信息的处理和分析被应用到诸如安防、电力、汽车等领域。 以安防市场为例&#xff0c;早在2017年&#xff0c;行业咨询公司IHS Market&#xff0c;我国在公共和私人领域安装有摄像头约1.76亿…

QGraphicsView实现简易地图1『加载离线瓦片地图』

最简单粗暴的加载方式&#xff0c;将每一层级的所有瓦片地图全部加载 注&#xff1a;该方式仅能够在瓦片地图层级较低时使用&#xff0c;否则卡顿&#xff01;&#xff01;&#xff01; 瓦片地图数据来源&#xff1a;水经注-高德地图-卫星地图 瓦片地图瓦片大小&#xff1a;25…

#vue3报错 Cannot read properties of null (reading ‘isCE‘)#

场景&#xff1a;使用 npm 安装依赖包的时候&#xff0c;如如安装 npm i xlsx npm i file-saver 重新运行报错 Cannot read properties of null (reading isCE)# 解决办法&#xff1a; 使用的vite vue 在vite.config.ts添加如下配置&#xff1a; dedupe: [ vue ]

二十章:基于弱监督语义分割的亲和注意力图神经网络

0.摘要 弱监督语义分割因其较低的人工标注成本而受到广泛关注。本文旨在解决基于边界框标注的语义分割问题&#xff0c;即使用边界框注释作为监督来训练准确的语义分割模型。为此&#xff0c;我们提出了亲和力注意力图神经网络&#xff08;A2GNN&#xff09;。按照先前的做法&a…

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统&#xff1a; 微软的操作系统主要是 Windows 系列&#xff0c;包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统&#xff08;Microsoft System&#xff09;是美国微软开发的Wi…

多线程(JavaEE初阶系列4)

目录 前言&#xff1a; 1.单例模式 1.1饿汉模式 1.2懒汉模式 1.3结合线程安全下的单例模式 1.4单例模式总结 2.阻塞式队列 2.1什么是阻塞队列 2.2生产者消费者模型 2.2.1 上下游模块之间进行“解耦合” 2.2.2削峰填谷 2.3阻塞队列的实现 结束语&#xff1a; 前言&a…

【Linux后端服务器开发】select多路转接IO服务器

目录 一、高级IO 二、fcntl 三、select函数接口 四、select实现多路转接IO服务器 一、高级IO 在介绍五种IO模型之前&#xff0c;我们先讲解一个钓鱼例子。 有一条大河&#xff0c;河里有很多鱼&#xff0c;分布均匀。张三是一个钓鱼新手&#xff0c;他钓鱼的时候很紧张&a…

移动零——力扣283

题目描述 双指针 class Solution{ public:void moveZeroes(vector<int>& nums){int n nums.size(), left0, right0;while(right<n){if(nums[right]){swap(nums[right], nums[left]);left;}right;}} };

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; LLM 进化树升级版&#xff01;清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …

七、用户画像

目录 7.1 什么是用户画像7.2 标签系统7.2.1 标签分类方式7.2.2 多渠道获取标签 7.3 用户画像数据特征7.3.1 常见的数据形式7.3.2 文本挖掘算法7.3.3 嵌入式表示7.3.4 相似度计算方法 7.4 用户画像应用 因此只基于某个层面的数据便可以产生部分个体面像&#xff0c;可用于从特定…

JAVASE---数据类型与变量

1. 字面常量 常量即程序运行期间&#xff0c;固定不变的量称为常量&#xff0c;比如&#xff1a;一个礼拜七天&#xff0c;一年12个月等。 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(…

从源码分析Handler面试问题

Handler 老生常谈的问题了&#xff0c;非常建议看一下Handler 的源码。刚入行的时候&#xff0c;大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()

7 | PyYAML源码之yaml.compose_all&#xff0c;yaml.load,yaml.load_all 1 yaml.compose_all()2 yaml.load()3 yaml.load_all() 1 yaml.compose_all() 源码&#xff1a; 作用&#xff1a;分析流中的所有YAML文档&#xff0c;并产生相应的表示树。解析&#xff1a; # -*- codi…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

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