当前位置: 首页 > article >正文

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

文章目录

  • 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.kler.cn/news/157542.html

相关文章:

  • 【云原生 | Docker】Docker核心概念 应用上手最佳流程
  • Unity版本使用情况统计(更新至2023年10月)
  • ESP32-Web-Server编程-通过 Web 下载文本
  • 基于APM(PIX)飞控和mission planner制作遥控无人车-从零搭建自主pix无人车普通舵机转向无人车-1(以乐迪crossflight飞控为例)
  • 关于#c++#的问题:将输入的字符串a复制给字符串b,然后用数组名a和b输出两个字符串(相关搜索:指针变量)
  • qt使用wimlib-imagex,做windows系统备份还原
  • python爬虫非对称加密RSA案例:某观鸟网站
  • 【离散数学】——期末刷题题库(集合)
  • 如何使用Node.js快速创建本地HTTP服务器并实现异地远程访问
  • 源码安装git
  • php之zip文件中压缩、解压、增加文件、删除
  • Linux系统下Nginx的安装步骤
  • 10、SQL注入——数据库基础
  • JS浮点数精度问题及解决方案
  • kk(kubeadmin)在麒麟与centos安装k8s集群踩坑记录
  • Unity优化篇:对于unity DrawCall/Mesh/纹理压缩/内存等方面的常规调试和优化手段
  • css实现正六边形嵌套圆心
  • 网络安全(二)-- Linux 基本安全防护技术
  • 丢掉破解版,官方免费了!!!
  • Mybatis相关API(Sqlsession和sqlsessionFactroy)
  • 海云安参与制定《信息安全技术 移动互联网应用程序(App)软件开发工具包(SDK)安全要求》标准正式发布
  • 电脑如何录音?适合初学者的详细教程
  • python获取阿里云云解析dns的域名解析记录
  • 互联网大厂技术活动+实践分享
  • MySQL中的存储引擎
  • C语言--求一个十进制整数中1的个数
  • 【qml入门教程系列】:qml列表控件ListView用法介绍
  • 4.grid_sample理解与使用
  • 【模电】基本共射放大电路的工作原理及波形分析
  • TCP/IP的体系结构