Rust环境配置

news2024/9/21 0:51:51

专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C++、和python历史悠远,但是它的优点可以说是非常的多,既继承了C++运行速度,还拥有了Java的内存管理,就我个人来说,还有一个优点就是集成化的编译工具cargo,语句风格和C++极其相似,所以说我本人还是比较喜欢这个语言,特此建立这个专栏,作为学习的记录分享。

日常分享:每天努力一点,不为别的,只是为了日后,能够多一些选择,选择舒心的日子,选择自己喜欢的人!


目录

前言

环境配置

windows环境安装

测试

Linux/macos安装

Ubuntu安装

第一步

第二步

Rust的删除

 更新与卸载

Hello,world!

Hello,Cargo!

使用cargo创建项目

Cargo.toml文件

src/main.rs

构建并运行Cargo项目

cargo build命令

cargo run命令

cargo check命令

release构建——发布

总结


前言

Rust 程序设计语言的本质实际在于 赋能empowerment):无论你现在编写的是何种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。这是官网上的一句话,这句话也涵盖了Rust语言的未来广泛的市场,虽然说在中国还没有进行大规模的普及,但是在国外却有了很大的市场,所以说,Rust语言在未来的市场不会太差。所以,从现在开始就可以进入Rust语言的学习。

环境配置

windows环境安装

点击官网网址,该网页会根据你使用的操作系统来给出界面,windows界面下只需要根据你电脑的位数选择安装包下载,然后点击下载好的setup程序,当然,Rust的安装必须要在c的环境里,你要确保你的电脑上有gcc或者isual studio等环境,点击程序后会出现一个蓝色或者黑色的终端,输入1,按Enter,安装完毕,windows下面安装Rust会自带Cargo,所以不再需要单独下载。

测试

打开电脑终端,输入rustc --version命令行,如果出现版本号,代表安装成功。

Linux/macos安装

安装下面的命令,在终端中输入,按照提示完成安装:

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

Ubuntu安装

Ubuntu虽然也是Linux系统,但是用户很多,很多初学者都不会安装,我给出我的安装过程:

第一步

打开终端,输入命令:

sudo apt install rustc -y

第二步

打开终端,输入:

sudo apt install cargo

安装cargo。

Rust的删除

sudo apt remove rustc

 更新与卸载

windows下是通过restup安装的,那么卸载和安装均可以使用工具链Rustup,更新到最新版本的命令行:

rustup update

 卸载Rust和rustup:

rustup self uninstall

 至此,环境安装完毕,开始你的第一条代码:

Hello,world!

每门编程语言的第一条语句“Hello,world!”,我们在这里也来创建一个Hello,world的程序。

利用终端或者直接创建一个文件夹,然后创建一个以.rs为后缀的文件,然后打开,开始输入以下的语句:

fn main(){
   println!("Hello,world!");
}

如果是编译器的话,可以直接使用编译器进行编译,也可以使用终端,输入rustc 文件名.rs命令。然后会得到一个可执行,windows上应该得到的是.exe文件,Linux下会得到二进制可执行,Linux下执行./可执行文件名字,windows下可以直接点击.exe文件。至此,第一条程序创建完成,但是这样太过复杂,有没有一种简单的方式?

Hello,Cargo!

Cargo 是 Rust 的构建系统和包管理器。所以利用cargo进行编译和执行,会大大减轻我们的工作量。为了确保cargo能够使用,先要确保cargo已经扎un安装。

打开终端,输入命令行:cargo --version.

如果出现了版本号,安装成功,否则,需要单独安装。

使用cargo创建项目

我们使用Cargo创建新项目,然后看看与上面创建的“Hello,world!”项目有什么不同,在你放置代码的目录下,打开终端,输入:

$  cargo new hello_cargo
cd hello_cargo

 第一行命令创建了hello_cargo的项目,打开这个项目,你会发现多了几个文件,

进入 hello_cargo 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。

这也会在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。如果在一个已经存在的 git 仓库中运行 cargo new,则这些 git 相关文件则不会生成;可以通过运行 cargo new --vcs=git 来覆盖这些行为。

Cargo.toml文件

[package]
name = "Rust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

这个文件使用 TOML (Tom's Obvious, Minimal Language) 格式,这是 Cargo 配置文件的格式。

第一行,[package],是一个片段(section)标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他片段(section)。

接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition 的值。

最后一行,[dependencies],是罗列项目依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用得上这个片段。

src/main.rs

fn main() {
    println!("Hello, world!");
}

Cargo 为你生成了一个 “Hello, world!” 程序,正如我们之前编写的示例 1-1!目前为止,我们的项目与 Cargo 生成项目的区别是 Cargo 将代码放在 src 目录,同时项目根目录包含一个 Cargo.toml 配置文件。

Cargo 期望源文件存放在 src 目录中。项目根目录只存放 README、license 信息、配置文件和其他跟代码无关的文件。使用 Cargo 帮助你保持项目干净整洁,一切井井有条。

如果没有使用 Cargo 开始项目,比如我们创建的 Hello,world! 项目,可以将其转化为一个 Cargo 项目。将代码放入 src 目录,并创建一个合适的 Cargo.toml 文件。

构建并运行Cargo项目

cargo build命令

执行该命令,会出现一些警告和编译成功的通知,如下面:

Compiling Rust v0.1.0 (/home/ddb/文档/Hello)
warning: variable does not need to be mutable
 --> src/main.rs:3:5
  |
3 | let mut s=String::from("Hello,world!");
  |     ----^
  |     |
  |     help: remove this `mut`
  |
  = note: `#[warn(unused_mut)]` on by default

warning: function `gives_ownership` is never used
 --> src/main.rs:9:4
  |
9 | fn gives_ownership()->String {
  |    ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function `takes_and_gives_back` is never used
  --> src/main.rs:13:4
   |
13 | fn takes_and_gives_back(a_string: String)->String {
   |    ^^^^^^^^^^^^^^^^^^^^

warning: function `calculate_length` is never used
  --> src/main.rs:21:4
   |
21 | fn calculate_length(s: &String) -> usize {
   |    ^^^^^^^^^^^^^^^^

warning: crate `Rust` should have a snake case name
  |
  = note: `#[warn(non_snake_case)]` on by default
  = help: convert the identifier to snake case: `rust`

warning: variable `worldIndex` should have a snake case name
 --> src/main.rs:4:5
  |
4 | let worldIndex=first_letter(&s);
  |     ^^^^^^^^^^ help: convert the identifier to snake case: `world_index`

warning: `Rust` (bin "Rust") generated 6 warnings
    Finished dev [unoptimized + debuginfo] target(s) in 0.70s

 这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 target\debug\hello_cargo.exe),而不是放在目前目录下。由于默认的构建方法是调试构建(debug build),Cargo 会将可执行文件放在名为 debug 的目录中。

cargo run命令

cargo run 在一个命令中可以同时编译并运行生成的可执行文件,如果你编译过后没有进行改动,那么就不会重新编译,而是直接运行,所以说这个命令非常的简洁。

cargo check命令

该命令快速检查代码确保其可以编译,但并不产生可执行文件,该命令主要是用于检查代码是否出现错误,而不会编译,可以方便操作者检查代码。

使用 Cargo 的一个额外的优点是,不管你使用什么操作系统,其命令都是一样的。所以从现在开始本书将不再为 Linux 和 macOS 以及 Windows 提供相应的命令。

release构建——发布

当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。这会在 target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为了开发,你需要经常快速重新构建;另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。如果你在测试代码的运行时间,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。

总结

本节主要是讲解一下rust的环境配置以及一些命令,我个人建议是多使用终端进行操作,无论是Linux还是macos,windows系统,cargo的命令都是一样的,所以不再需要记很多的命令。这也是我推荐使用cargo的原因。本节的内容就到此结束,下一节我们正式开始Rust编程语言的学习。

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

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

相关文章

动态规划之 70爬楼梯(第2道)

题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例&#xff1a; 解法&#xff1a; class Solution { public:int climbStairs(int n) {vector<int> dp(n1);//n1个数…

IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生学籍管理系统

IDEASpringBootmybatisSSMlayuiMysql学生学籍管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.专业管理3.班级管理4.学生管理5.老师管理6.公告管理7.课程管理8.开课管理9.用户管理 三、部分代码UserDao.javaUserController.javaUser.java 四、其他获取源码 一、系…

WEB中表单案例

一、题目&#xff1a;书写如下图的web前端 二、解题代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

Webstorm+Nodejs+webpack+vue-cli+Git搭建vue环境

此笔记归纳整理webstorm搭建vue项目&#xff0c;仅作记录使用。 一、安装Webstorm1、双击运行安装包2、设置安装路径3、按需选择4、安装5、运行6、激活 二、安装node.js1、双击运行安装包2、设置安装路径3、验证安装4、修改全局模块下载路径5、更换npm源6、全局安装基于淘宝源…

C++模拟实现string类

目录 前言&#xff1a;什么是string类&#xff1f;string类的模拟实现 一、四个默认成员函数1.1 构造函数1.2 拷贝构造函数1.3 赋值重载函数1.4 析构函数 二、迭代器三、c_str()函数四、size和capacity函数五、reserve函数六、resize函数七、push_back函数七、append函数八、fi…

C#基础学习_方法的重载

C#基础学习_方法的重载 在类中定义方法的一般方式(不使用重载时): public int Add(int a, int b){return a + b;}

mysql解决varchar字段内容不区分大小写问题

测试内容: 解决方案: 方案一:将查询条件用binary()括起来 select * from sys_menu where binary permission_str SYSTEM 方案二:将排序规则改为utf8_xxx_cs(推荐) utf8_xxx_ci不区分大小写&#xff0c;ci为case insensitive的缩写&#xff0c;即大小写不敏感。 utf8_xxx_c…

Python学习笔记(十九)————json相关

目录 &#xff08;1&#xff09;什么是json &#xff08;2&#xff09; json有什么用 &#xff08;3&#xff09; json格式数据转化 &#xff08;4&#xff09;Python数据和Json数据的相互转化 &#xff08;1&#xff09;什么是json JSON 是一种轻量级的数据交互格式。可以按照…

linux下nmap的使用

linux下nmap的使用 文章目录 centos下nmap的使用安装使用1234567 centos下nmap的使用 安装 yum install nmap使用 1 nmap your-ip&#xff08;域名&#xff09;开放了22、80、111、443端口 2 nmap -p 端口 IP(域名)&#xff0c;判断ip是否开放指定端口3 默认脚本扫描&am…

JavaWeb 速通HTML

目录 一、拾枝杂谈 1.网页组成 : 1 结构 2 表现 3 行为 2.HTML入门 : 1 基本介绍 2.基本结构 : 3.HTML标签 : 1 基本说明 2 注意事项 二、常用标签汇总及演示 1.font标签 : 1 定义 2 演示 2.字符实体 : 1 定义 2 演示 3.标题标签 : 1 定义 2 演示 4. 超链接标签 : 1…

清华青年AI自强作业hw6:基于ResNet实现IMAGENET分类任务

清华青年AI自强作业hw6&#xff1a;基于ResNet实现IMAGENET分类任务 简述作业实现相关链接 一起学AI系列博客&#xff1a;目录索引 简述 hw6作业为基于ResNet模型&#xff0c;并利用VGG标准模块和GoogleNet中的inception模块对IMAGENET数据集进行20类分类。模型输入图像尺寸为2…

特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI 部分源码 %--------------------

OpenCV红色图像上用绿色画了两条线

// 红色图像上 画上蓝色的线 // 在图中画一条直线 函数原型 // 函数作用 // 给定一个图像img,连接点pt1和pt2的坐标,在图中画一条直线,color表明线的颜色cv.line() // 其中需要注意的是,点坐标(x, y)中,x代表图片的列,y代表图片的行 // CvPoint pt1, //直线起点 // CvPoi…

Android - AIDL

一、概念 二、使用 2.1 Server 端 2.1.1 创建 .aidl 文件 Module右键→New→AIDL→AIDL File&#xff08;如果不可选&#xff0c;在build.gradle的buildFeatures节点添加aidl true&#xff09;。 在创建的接口中定义抽象方法。 interface IDemoAidlInterface {//自己的业…

MySQL库表的简单操作

1.创建数据Market&#xff0c;在数据库中创建表customers&#xff0c;表结构如图 (1)创建数据库Market create database Market&#xff1b; (2)创建数据表customers&#xff0c;在c_num字段添加主键约束&#xff0c;c_birth字段上添加非空约束 create table customers&#…

IDEA 导入多模块项目并设置运行

1、导入多模块项目 导入的步骤点击左上角File->New->Module from Existing Sources&#xff0c;最后点击选择项目的pom文件即可 2、设置模块 如果pom.xml文件是灰色并且有横杠&#xff0c;则需要这样设置&#xff1a; 把√去掉。 项目结构如图所示&#xff1a; 本项…

Linux下如何使用git?如何搭建自己的库?

前言&#xff1a; 本文主要介绍如何在 Linux 中使用 git 、gitee 账号注册、如何新建远程仓库与本地仓库 以及 git 的常用指令。 一.安装git 切换至 root 用户身份&#xff0c;输入指令&#xff1a; yum install -y git使用 sudo 指令&#xff1b; sudo yum install -y git二…

《Redis 核心技术与实战》课程学习笔记(四)

Redis 持久化机制 AOF日志&#xff1a;宕机了&#xff0c;Redis 如何避免数据丢失&#xff1f; 一旦服务器宕机&#xff0c;内存中的数据将全部丢失。目前&#xff0c;Redis 的持久化主要有两大机制&#xff0c;即 AOF 日志和 RDB 快照。 AOF 日志是如何实现的&#xff1f; …

【架构设计】架构知识体系

文章目录 1、什么是架构和架构本质2、架构分类2.1、业务架构&#xff08;俯视架构&#xff09;2.2、应用架构&#xff08;剖面架构&#xff0c;也叫逻辑架构图&#xff09;2.2.1、职责划分: 明确应用&#xff08;各个逻辑模块或者子系统&#xff09;边界2.2.2、职责之间的协作&…

[TPAMI 2022] 神经网络元学习:综述

Meta-Learning in Neural Networks: A Survey | IEEE Journals & Magazine | IEEE Xplore Meta-Learning in Neural Networks: A Survey 摘要&#xff1a; 近年来&#xff0c;元学习&#xff08;或“学会学习”&#xff09;领域的兴趣急剧上升。与使用固定学习算法从头开…