rust入门(rust教程、rust安装方法)

news2024/11/20 20:20:51

文章目录

  • Rust开发入门
    • Rust的特性
    • Rust的应用场景
    • Rust安装——环境配置
      • 1. 安装rustup
        • 具体执行步骤
      • 2. 验证安装
    • Rust的卸载
    • 基本语法
      • 变量与数据类型
      • 控制流
      • 函数
    • Rust的所有权系统
    • 错误处理
    • 实战:构建一个小项目
      • 创建新项目
      • 编写代码
      • 运行项目
        • 安装相关链接器
        • 运行
      • 删除项目

Rust开发入门

Rust是一种专注于性能、并发和内存安全的系统编程语言。本文旨在为那些对此语言感兴趣的人提供一个初步的入门指南。

Rust的特性

Rust是一种多范式、编译型的系统编程语言,它注重于性能和安全,特别是并发和内存安全1。Rust采用了许多先进的语言特性,包括类型推导、模式匹配、借用检查和零成本抽象等。

Rust的应用场景

Rust被设计为能够处理大量的并发和高性能的软件,这使得它适合在游戏开发、操作系统开发、浏览器引擎开发以及嵌入式系统等领域发挥巨大的作用。


Rust安装——环境配置

要开始使用Rust,首先需要在你的计算机上安装它。以下是一些基本的步骤:

1. 安装rustup

rustup是Rust版本管理和工具链安装的命令行应用。你可以从rustup.rs网站下载并安装它。

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

这条命令下载了一个shell脚本,并用shell执行它,该脚本安装Rust编程语言和rustup工具链。

注意如果没有curl先安装curl,ubuntu上使用:

sudo apt update ; apt install curl
具体执行步骤

终端输入:

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

在这里插入图片描述

我们敲1按回车,选择默认安装:

在这里插入图片描述

上面提示我们说已经安装好了,需要重启shell会话来重新加载环境变量。

2. 验证安装

我们重启shell后,通过运行下面的命令,来检查是否安装成功。

rustc --version

在这里插入图片描述

已经安装成功了。


Rust的卸载

如果是通过rustup安装的Rust,可以使用下面的命令卸载Rust和rustup,它将会卸载rustup以及rustup安装的所有工具链和配置,包括Rust编译器(rustc)、Rust的包管理器(cargo)等:

rustup self uninstall

基本语法

在介绍了如何安装Rust之后,让我们看一下它的基本语法。

变量与数据类型

Rust是静态类型的,这意味着在编译时必须知道所有变量的类型。这是一个声明变量的示例:

let x: i32 = 10;

Rust拥有许多不同的数据类型,包括但不限于整型、浮点型、布尔型、字符型、数组和字符串等。

控制流

Rust支持常见的控制流语句,包括ifelsewhilefor循环和match模式匹配。

函数

在Rust中,你可以使用fn关键字来定义函数。以下是一个函数的例子:

fn add(x: i32, y: i32) -> i32 {
    x + y
}

Rust的所有权系统

Rust的所有权系统是一种编译时的内存管理机制,它可以保证内存安全而无需垃圾收集。所有权系统基于三个主要的规则2

  1. Rust中的每一个值都有一个被称为其所有者(owner)的变量。
  2. 一次只能有一个所有者。
  3. 当所有者离开作用域,这个值将被丢弃。

错误处理

Rust提供了一套强大的错误处理机制,它区分了可恢复的错误和不可恢复的错误。对于可恢复的错误,我们通常返回Result<T, E>类型;对于不可恢复的错误,我们使用panic!宏来停止程序执行。


实战:构建一个小项目

最后,让我们通过一个简单的命令行应用来看一下Rust的实际应用。这个应用会从文件中读取数据,并统计各单词出现的次数。

创建新项目

使用cargo创建一个新的二进制项目:

cargo new word_count
cd word_count

在这里插入图片描述
在这里插入图片描述

编写代码

进入项目:

在这里插入图片描述

src/main.rs文件中,添加以下代码:

use std::collections::HashMap;
use std::fs;

fn main() {
    let contents = fs::read_to_string("test.txt")
        .expect("Something went wrong reading the file");

    let mut map = HashMap::new();
    for word in contents.split_whitespace() {
        let count = map.entry(word).or_insert(0);
        *count += 1;
    }

    println!("{:?}", map);
}

在这里插入图片描述

这段代码首先从test.txt文件中读取内容,然后对每个单词进行计数,并将结果存储在HashMap中。

同时在word_count目录下创建test.txt文件,并添加以下内容:

Hello world this is a test file. This file will be read by the Rust program.
Let's count the number of word in this text.

在这里插入图片描述
在这里插入图片描述

运行项目

安装相关链接器

注意:运行前请确保系统已安装相关链接器:

比如我这因为找不到cc链接器而报错了:

在这里插入图片描述

执行:

which cc

发现什么都没有:

在这里插入图片描述

解决方法:安装build-essential包,它包含了GCC、G++和其他一些基本的开发工具:

sudo apt update
sudo apt install build-essential

装好后就有cc链接器了:

在这里插入图片描述

运行

使用cargo运行你的项目:

cargo run

运行结果:

在这里插入图片描述

结果显示了每个单词在文本中的出现次数。(因为没有做细节处理,所以file.也会被当作一个单词)

删除项目

直接删除项目目录即可:

rm xxx -r

在这里插入图片描述


现在,你已经完成了你的第一个Rust项目!


  1. “The Rust Programming Language”, Steve Klabnik and Carol Nichols, No Starch Press, 2019. ↩︎

  2. “Programming Rust: Fast, Safe Systems Development”, Jim Blandy and Jason Orendorff, O’Reilly Media, 2016. ↩︎

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

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

相关文章

vue-cli创建项目运行报错this[kHandle] = new _Hash(algorithm, xofLen);(完美解决)

1&#xff1a;问题出现的原因 出现这个问题是node.js 的版本问题&#xff0c;因为 node.js V17开始版本中发布的是OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制&#xff0c;可能会对生态系统造成一些影响。故此以前的项目在使用 nodejs V17以上版本后会报错。…

【C#】读取ini配置文件的内容

一、编写ini配置文件 ini文件时初始化文件&#xff0c;通常是系统配置文件所采用的存储格式。ini文件有自己的固定格式&#xff0c;是由若干个“节”&#xff08;section&#xff09;组成&#xff0c;每个节由若干个“键”&#xff08;key&#xff09;组成&#xff0c;每个key…

上门预约洗衣洗鞋管理软件小程序开发;

闪站侠洗衣洗鞋店管理软件 为洗衣洗鞋店、干洗店提供加盟、直营连锁管理&#xff1b; 实现门店上门收衣>开单拍照>清洗护理>工厂洗涤>订阅信息进度通知>会员取衣>报表统计等服务流程。实现上门收衣服务&#xff0c;数据实时同步门店&#xff0c;提高店铺形象…

No supported authentication methods available (server sent: publickey) 问题的解决

参考&#xff1a;git clone使用ssh报错: No supported authentication methods available(server sent: publickey) 的解决办法_赵锦川的博客-CSDN博客 No supported authentication methods available (server sent: publickey) 修改&#xff1a;网络的中的SSH设置

PHP使用HTTP代码示例模板

PHP是一种广泛用于服务器端的编程语言&#xff0c;它提供了许多内置的函数和扩展&#xff0c;以便开发人员能够轻松地处理HTTP请求和响应。在PHP中&#xff0c;您可以使用以下代码示例模板来处理HTTP请求和生成HTTP响应。 php复制代码 <?php // 处理GET请求 if ($…

预约按摩小程序有哪些功能特点?

随着科技的飞速发展&#xff0c;我们的生活方式发生了翻天覆地的变化。现在&#xff0c;只需动动手指&#xff0c;就能解决许多生活中的问题。同城预约上门按摩小程序&#xff0c;就是这样一个方便、快捷的解决方案。 在忙碌的生活中&#xff0c;身心疲惫的人们急需一种快速有效…

CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

CentOS7操作系统安装nginx实战&#xff08;多种方法&#xff0c;超详细&#xff09; 一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址&#xff08;方法一&#xff09;1. 找到官网的源2. 使用rpm -ivh 进行安装3. 安装完成之后查看源&#xff1a; 2.1…

单个 Zip 文件体积超过 40GB

单个 Zip 文件体积超过 40GB WinRAR 平时用的多,不过有时候为了更好的通用性,也常常用到 zip 格式.查了一下资料,说是 zip 单个文件的体积不能超过 4GB. 自己动手试了下,用 WinRAR 创建出来的 zip 文件,大小可以超过 40GB, 如下图 为了压缩速度快,压缩方式用的是 “存储” Wi…

分布式锁框架Lock4j简单使用

最近项目中使用到了Lock4j的分布式锁组件&#xff0c;小编今天就带大家学习一下该框架&#xff0c;以及如何在我们项目中进行集成使用。 一、简介 Lock4j是一个分布式锁组件&#xff0c;它提供了多种不同的支持以满足不同性能和环境的需求&#xff1b;它基于Spring AOP&#…

HT4822 无输出隔直电容 立体声耳机放大器 中文资料

HT4822是一款无需输出隔直电容的立体声耳机放大器。HT4822支持差分和单端的模拟信号输入。 HT4822在3.6V供电下&#xff0c;THDN 1%&#xff0c;32ohm负载时能提供80mW的输出。其具有低至0.007%的THDN。HT4822能在2.5V-6.0V电源条件下工作&#xff0c;具有过热保护和欠压保护等…

网站变成灰色,实现方式

微信公众号看到一片关于&#xff1a;设置网站变灰的实现方式&#xff0c;觉得很nice&#xff0c;亲测有效&#xff0c;记录一下代码。 https://mp.weixin.qq.com/s/m946vpRpEDFzJNuWRQJrpg方法一&#xff1a; <style type"text/css"> html {filter:grayscale…

练习11-简单卷积器的设计

简单卷积器的设计 1&#xff0c;任务目的&#xff1a;2&#xff0c;明确设计任务2.1,目前这部分代码两个文件没找到&#xff0c;见第5、6节&#xff0c;待解决中。 &#xff0c;卷积器的设计&#xff0c;RTL&#xff1a;con1.v4&#xff0c;前仿真和后仿真&#xff0c;测试信号…

回归分析:预测和建模

回归分析:预测和建模 写在开头1. 回归分析的基本概念2. 回归分析的方法2.1 简单线性回归2.1.1 数学知识2.1.2 应用举例2.2 多元线性回归2.2.1 数学公式和应用2.2.1 应用场景举例2.3 多项式回归2.3.1 数学公式和应用2.3.2 应用场景举例2.4 逻辑回归2.4.1 数学公式和应用2.4.2 应…

如何使用3D模型格式转换工具HOOPS Exchange访问PMI?

HOOPS Exchange允许您从CAD文件访问的一类重要信息是附加到 3D 模型的产品制造信息 (PMI)。PMI 详细说明了模型制造时应遵循的公差。过去&#xff0c;此信息称为几何尺寸和公差 (GD&T)&#xff0c;通常在与模型关联的单独图纸中维护。 制造信息与模型的分离意味着制造信息…

速达软件全系产品任意文件上传漏洞复现 [附POC]

文章目录 速达软件全系产品任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 速达软件全系产品任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技…

SWD和JTAG

1、调试接口概念 1&#xff09;SWD&#xff1a;Serial Wire Debug&#xff0c;代表串行线调试&#xff0c;是ARM设计的协议&#xff0c;用于对其微控制器进行编程和调试。 SWD 引脚&#xff1a; SWDIO–串行数据线&#xff0c;用于数据的读出和写入SWDCLK–串行时钟线&#…

3_企业级Nginx使用-day2

企业级Nginx使用-day2 学习目标和内容 1、能够编译安装并使用第三方模块 2、能够理解location语法的作用 3、能够了解URL的rewrite重写规则 4、能够理解防盗链原理和实现 一、第三方模块使用 Nginx官方没有的功能&#xff0c;开源开发者定制开发一些功能&#xff0c;把代码公…

142873-41-4脂质过氧化抑制剂1-星戈瑞

142873-41-4脂质过氧化抑制剂1 英文名称&#xff1a;Lipid peroxidation inhibitor 1 中文名称&#xff1a;脂质过氧化抑制剂 化学名称&#xff1a;2,4,6,7-四甲基-2-[(4-苯基哌啶-1-基)甲基]-3H-1-苯并呋喃-5-胺 CAS&#xff1a;142873-41-4 外观&#xff1a;固体粉末 分…

关于开展人工智能专业人员“自然语言及语音处理设计开发工程师”专项培训的通知

“人工智能技术与咨询”发布 工业与信息化部电子工业标准化研究院于2022年7月1日发布《人工智能从业技术人员要求》&#xff0c;现针对已发布标准于1月3日至7日在北京举办《自然语言与语音处理设计开发工程师》中级人才培养&#xff0c;下边是具体文件通知请大家查阅。行业人才…

物料 xx 未对销售组织 分销渠道 xx 语言 ZH 定义

查看具体 发现销售视图未维护&#xff0c;库存地点也未维护 即对应的MVKE ,MARD 都没有相关记录&#xff0c; 使得创建销售订单不成功。 解决方案 维护物料视图 mm50 然后选择对应的视图&#xff0c;再点击维护物料&#xff0c;进入到维护物料的视图里面 &#xff0c;填写…