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

Rust初接触

一、什么是Rust

Rust 是由 Mozilla 开发的多范式编程语言,专注于性能和安全性。
Rust 以其先进的安全并发能力而闻名, 它的语法类似于 C++,但它提供了更快的速度和内存安全性,但不使用垃圾收集器。
Rust 最初是为 Mozilla Firefox 浏览器开发的,但它的效率和优势吸引了许多开发人员开始使用 Rust,通常用于游戏开发。
Rust 在内存管理方面是创新的。例如,它不允许空指针或悬空指针。由于其功能性,Rust 常用于构建设备驱动程序、嵌入式系统、游戏和操作系统,例如 BlogOS、Redox、RustOS、Rux 和 Tock。
Rust 代码可以说以其速度和在测试前调试代码的能力而闻名。例如,Rust 可以开发在运行时检查代码错误的程序。
Rust 的特点

- 内存管理
- 内存安全
- 所有权制度
- 多态性
- 速度和性能

二、环境安装

1.windows

下载安装程序: https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
会得到一个rustup_init.exe,运行出现这个界面:
在这里插入图片描述

三个选项的意思分别是 1.默认参数安装 2.自定义安装 3.取消

*如果当前机器上已经安装了 MSVC (推荐),那么直接输入 1 并回车即可(默认装在C盘),直接进入第二步。如果机器上安装的是 MinGW,那么需要输入 2 (自定义安装),然后会提示 Default host triple ? ,将 default host triple 的 “msvc” 改为 “gnu” 再输入安装程序:
在这里插入图片描述
*

默认安装如果报错如:
在这里插入图片描述

解决方法就是科学上网

最后安装结果:
在这里插入图片描述

然后查看版本测试一下安装是否正常:
在这里插入图片描述

2.linux

直接运行:

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

也需要选择安装信息,我是直接默认了:
在这里插入图片描述

最后安装成功:
在这里插入图片描述

这里比windows多一步是重新加载环境变量,最后测试一下:
在这里插入图片描述

3.others

上面两个系统上安装实际上都是使用rustup来完成,如果你不想使用这种方法,例如无法科学上网在下载时总是失败,那么可以试试:
https://forge.rust-lang.org/infra/other-installation-methods.html

三、VSCODE 配置

rust没有官方的编辑器,但它被很多编辑器支持,甚至不用编辑器只使用命令行也可以,我习惯用VSCODE。
安装这两个插件:
在这里插入图片描述

配置就结束了。。。。。
然后测试一下,新建一个hello.rs文件,里面写:

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

然后命令行里用 rustc 编译生成exe,运行即可:

在这里插入图片描述

四、cargo

1.cargo

Rust 自带一个名为 Cargo 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理 Rust 项目,它可以处理很多任务,比如构建代码、下载依赖库并编译这些库。
在编写复杂的 Rust 程序时,几乎都需要用到依赖项,如果使用 Cargo 启动项目,添加依赖项将极其容易。

如果使用 rustup 安装的 rust 编译器的话,则会自带 Cargo,如果通过其他方式安装的话,还需要再手动安装一下。可以在终端输入如下命令检查是否安装了 Cargo:

$ cargo --version

如果看到了如下,则说明已安装!如果看到类似 command not found 的错误,就要去查看相应安装文档以确定如何单独安装 Cargo。
在这里插入图片描述

2.使用

找一个文件夹,命令行里输入:

cargo new hello_cargo

结果:
在这里插入图片描述

可以看到生成了一个 hello_cargo 文件夹,这也是我创建时指定的工程名称。
然后这个工程中有一个 src/main.rs ,这里面只有一个main函数,函数中输出了一句 hello world。
然后有一个.gitingore 文件,这是因为 cargo 会在创建目录时初始化一个 git 仓库。如果在一个已经存在的 git 仓库中运行 cargo new,则这些 git 相关文件则不会生成;可以通过运行 cargo new --vcs=git 来覆盖这个行为(cargo new 可以切换到其它版本控制系统)。
接下来是一个 carho.lock 文件,这个文件用来记录项目依赖的实际版本,正常来说,开发者不要改动这个文件,完全由 cargo 去控制这个文件的内容。
最后是一个 cargo.toml 文件,这个文件使用 TOML (Tom’s Obvious, Minimal Language) 格式,这是 Cargo 配置文件的格式。里面的内容是:

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

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

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

  • name等三行设置了 Cargo 编译程序所需的配置:项目名称、项目版本以及使用的 Rust 版本。(edition 与 rust 的版本对应参考: https://doc.rust-lang.org/nightly/edition-guide/index.html )

  • [dependencies],是其它依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,等项目用到依赖时就会用这个片段了。

下一步使用 cargo build 来编译项目:
在这里插入图片描述

看到编译成功,并且生成了一个 target 文件夹,这里面生成了一个 hello_cargo.exe 。

cargo 默认是编译的 debug 版本,因此生成的是 target/debug , 如果想要生成release ,需要使用

cargo build --release 

最后,cargo 还有两个命令:

cargo run
cargo check

cargo run 会在一个命令中同时编译并运行生成的可执行文件;
cargo check 会快速检查代码确保其可以编译,但并不产生可执行文件;

cargo 使用起来很简单,了解这些就可以上手了,剩余的有一些细节和优化就要去官方文档找了: https://doc.rust-lang.org/cargo/

相关文章:

  • 微服务拆分的思考
  • python的搜索引擎系统设计与实现 计算机竞赛
  • 【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库
  • 问题记录1 json解析问题
  • 论文阅读:CenterFormer: Center-based Transformer for 3D Object Detection
  • 纯css手写switch
  • 【LeetCode刷题(数据结构)】:给定一个链表 每个节点包含一个额外增加的随机指针 该指针可以指向链表中的任何节点或空节点 要求返回这个链表的深度拷贝
  • 全流量安全分析发现内部系统外联异常
  • python使用dataset快速使用SQLite
  • 这应该是关于回归模型最全的总结了(附原理+代码)
  • mac jdk的环境变量路径,到底在哪里?
  • 智慧党建小程序源码系统+在线答题考试二合一 带完整的搭建教程
  • 基于堆优化优化的BP神经网络(分类应用) - 附代码
  • WebGL 世界坐标系和本地坐标系
  • “Linux免除系统交互操作方法、expect自动化交互工具” 及 “SSH批量修改主机密码脚本”
  • Python爬虫selenium安装谷歌驱动解决办法
  • 使用Filter AND Interceptor校验等录(全网独一份,机不可失)
  • CCF CSP认证 历年题目自练Day34
  • IDEA中创建Web工程流程
  • Java NIO三大核心组件
  • 商务部:自5月7日起对原产于印度的进口氯氰菊酯征收反倾销税
  • 媒体评特朗普对进口电影征100%关税:让好莱坞时代加速谢幕
  • 贵州黔西游船倾覆事故70名落水人员在院救治,均为轻伤
  • 大一女生头孢过敏输液室呼救无医护响应,自行拔针仍不幸身亡
  • 加拿大总理将赴美同特朗普会晤,重点谈贸易压力
  • 苹果手机为何无法在美制造?全球供应链难迁移