Rust初接触

news2024/11/24 17:25:48

一、什么是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/

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

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

相关文章

Linux bash: ipconfig: command not found解决方法

安装完centos7运行ifconfig命令发现找不到 安装相关工具 yum install net-tools.x86_64 无脑yes即可

Jenkins UI 自动化持续化集成测试

一:安装jenkins 环境 在官网下载msi 直接安装即可 二:设置全局变量 设置allure 路径 三:创建项目 1、创建自由风格项目 2、如果项目在本地,且本地服务器是windows ,找到Jenkins安装根目录,寻找config…

Spring Cloud Pipelines 入门实践

文章目录 1. 前言2. Spring Cloud Pipelines 是做什么的2.1. 预定义的流程2.2. 集成测试和契约测试2.3.部署策略 4. Spring Cloud Pipelines的使用示例4.1. 创建一个Spring Boot应用4.2. 将代码托管到GitHub仓库4.3. 添加Spring Cloud Pipelines依赖4.4. 配置Spring Cloud Pipe…

基于Python简单实现接口自动化测试(详解)

一、简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy。期望读者可以通过本文对接口自动化测试有一个大致的了解。 二、引言 …

统信UOS 1060系统增量备份

原文链接:统信UOS 1060系统增量备份 hello,大家好啊,今天给大家带来关于统信UOS 1060系统备份还原的系列内容的第三篇文章,系统增量备份,我们可以将系统增量备份到u盘中,后面需要的话,可以进行还…

C#中base关键字的使用

在C#编程语言中,base关键字扮演着重要的角色。它用于在派生类中调用基类的成员,并为开发人员提供了一种简单而有效的方式来实现继承以及重用代码。在本文中,我们将探讨base关键字的使用及其在C#中的代码实例。 首先,我们需要了解…

如何成功安装Node.js并在VS Code终端使用npm

✨✨✨ 感谢优秀的你打开了小白的文章 “希望在看文章的你今天又进步了一点点,生活更加美好!”🌈🌈🌈 目录 1.什么是Node.js? 2.解决方法 3.淘宝镜像安装 1.什么是Node.js? Node.js 是一种开源与跨平台的 JavaSc…

Apollo(阿波罗)分布式配置中心

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

力扣-459.重复的子字符串

Idea 看题解的KMP自己手动实现太难了,我还是选择容易理解的暴力枚举叭 AC Code class Solution { public:bool isCheck(string subs, string s) {if(s.size() % subs.size() ! 0) return false;int k s.size() / subs.size();string comp "";while(k-…

【微信小程序】6天精准入门(第1天:小程序入门)

一、介绍 1、什么是小程序 小程序是一种轻量级的应用程序,可以在移动设备上运行,不需要用户下载和安装。它们通常由企业或开发者开发,用于提供特定功能或服务。 微信小程序(wei xin xiao cheng xu),简称小程…

设备巡检管理系统—动态化管理设备

为进一步夯实设备基础管理,提高设备运行的可靠性,做到及时发现设备故障隐患,并根据检查结果分析提出预防性维修计划,从而使用凡尔码搭建设备管理系统来管理设备,该系统能最大限度地减少设备故障停机,杜绝设…

【git】gitlab常用命令

gitlab官网 官网:官网 中文官网:中文官网 默认的gitlab安装目录 /opt/gitlab/bin 启动 gitlab-ctl start 查看状态 gitlab-ctl status 停止 gitlab-ctl stop 重启GitLab gitlab-ctl restart 查看gitlab的配置文件 配置的路径是:/…

【Java】jvm 元空间、常量池(了解)

JDK1.8 以前的 HotSpot JVM 有方法区,也叫永久代(permanent generation)方法区用于存放已被虚拟机加载的类信息,常量、静态遍历,即编译器编译后的代码JDK1.7 开始了方法区的部分移除:符号引用(S…

Zotero同步坚果云

实用教程 无意之中发现的Zotero同步坚果云的教程,简直和自己当时看视频,搜经验贴做的步骤一模一样,十分赞!值得收藏!只是忘记当时在哪保存的图片了,所以没法引用!只能在这借花献佛,…

二叉树学习笔记

1、链表实现二叉树 // 树节点类 class Bitreenode {char data;Bitreenode* ls, * rs, * fa; // ls为左儿子节点,rs为右儿子节点,fa为父节点 public:Bitreenode() {data 0;ls rs fa nullptr;}void set_ls(Bitreenode *p) {ls p;}void set_rs(Bitre…

ONNX推理流程

文章目录 python版API推理流程 python版API推理流程 使用netron工具查看onnx网络结构 如下图,可以看出此次要使用的网络输入为: 输入名称:input输入形状:[1, 3, 256, 256]输入数据类型:float32 网络的输出为&#xff1…

如何利用IP地址定位保护网络安全?

通过IP地址定位可以在一定程度上增强网络安全,但它并不是唯一的安全措施。以下是如何利用IP地址定位来保护网络安全的一些方法: 异常检测和入侵检测:监控网络上的IP地址流量,定位异常活动,如大规模的连接尝试、不寻常的…

习题1. 31

话不多说 先上代码 (defn product [ term a nxt b](defn iter [a result](if (> a b)1 (* (term a) (iter (nxt a) result))))(iter a 1)) 跟习题1.30比较起来,就是两个地方不同 乘法不能乘0 必须是1。难度来讲,跟1.30难度是一样的。增加了迭代过…

Qt之submodule编译

工作中会遇到这样一种情况:qt应用程序在运行时提示找不到某个qt的动态库。我遇到的是缺少libQt5Websocket.so,因为应用程序是在x86平台银河麒麟v10上开发,能够正常编译运行,然后移植到rk3588(aarch64架构)上…

阿里云/腾讯云/华为云国际版实名账号:亚太已发展超2500个本地生态伙伴 超50%收入由伙伴创造

华为全联接大会2022在泰国开幕,以“创新无限,一切皆服务”为主题的华为云峰会成功举办,华为云亚太地区部总裁曾兴云、华为云首席产品官方国伟以及多位客户伙伴发表主旨演讲。会上,华为云发布《云原生2.0架构白皮书》并联合CNCF&am…