Rust 学习笔记(持续更新中…)

一、 编译和运行是单独的两步

  • 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名 - rustc main.rs
  • 编译成功之后,会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件 ,里面包含调试信息
  • Rust 是 ahead-of-time 编译的语言 - 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rust )
  • rustc 只适合简单的 Rust 程序

二、Cargo

1. 简介

  • Cargo 是 Rust 的构建系统和包管理工具 - 它可以:构建代码、下载依赖的库、构建这些库…
  • 安装 Rust 的时候会自动把 Cargo 也安装上,不需要再另外安装
  • 检查是否安装成功:cargo --version 

2.  使用 Cargo 创建项目

  • 创建项目命令:cargo new hello_cargo - 项目名称也是 hello_cargo,会创建一个新的目录 hello_cargo:Cargo.tomlsrc 目录(main.rs)、初始化了一个新的 Git 仓库.gitignore - 可以使用其它的 VCS 或不使用 VCS:cargo new 的时候使用 --vcs 这个flag)

        VCS:版本控制系统(JvJv注)

3. Cargo.toml

  •  TOML(Tom's Obvious,Minimal Language)格式,是 Cargo 的配置文件的格式

  • [ package ]:是一个区域标题,表示下方内容是用来配置包(package)的
    1. name:项目名
    2. version:项目版本
    3. authors:项目作者
    4. edition:使用的 Rust 的版本
  • [ dependencies ]:另一个区域的开始,它下面会列出项目的依赖项
  • 在 Rust 中,代码的包称作 crate

4. src / main.rs

  •  cargo 生成的 main.rssrc 目录下
  • Cargo.toml 在项目顶层下
  • 顶层目录可放置:README、许可信息、配置文件和其它与程序源码无关的文件
  • 如果创建项目时没有使用 cargo,也可以按照以下步骤把项目转化为使用 cargo 的形式:
    1. 把源代码文件移动到 src
    2. 创建 Cargo.toml 并依次填写相应的配置

5. 构建 Cargo 项目:cargo build

  • 创建可执行文件:target / debug / hello_cargotarget \ debug \ hello_cargo.exe(Windows 下)
  • 运行可执行文件:./ target / debug / hello_cargo.\ target \ debug \ hello_cargo.exe(Windows 下)
  • 第一次运行 cargo build 会在顶层目录生产 cargo.lock 文件
    1. 该文件负责追踪项目依赖的精确版本
    2. 不需要手动修改该文件

6. 构建并运行 Cargo 项目:cargo run

  • 它是:编译 + 执行
  • 如果之前编译成功过,且源码没有改变,那么就会直接运行二进制文件

7. 检查代码:cargo check

  • 检查代码,确保代码能通过编译,但不产生任何可执行文件
  • cargo check 要比 cargo build 快得多
  • 好处:编写代码的时候,可以连续、反复的使用 cargo check 检查代码,提高效率

8. 为发布构建

  • cargo build --release
    1. 编译时会进行优化
    2. 代码会运行的更快,但是编译时间更长
    3. 会在 target / release 而不是 target / debug 生成可执行文件
  • 两种配置
    1. 开发时
    2. 正式发布时

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

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

相关文章

cuda编程常见问题

cuda环境配置 参考链接 https://blog.csdn.net/weixin_43788327/article/details/125823507?spm1001.2014.3001.5506 疑难问题 在学习《GPU高性能编程CUDA实战》这本书时,发现书里面的代码很多变量都没定义过,经过搜索发现这都是书上自带的代码。 代…

数据库-DML

DML:用来对数据库中表的数据记录进行增、删、改等操作。 添加数据(INSERT) insert语法: 指定字段添加数据:insert into 表单(字段名1,字段名2)values(值1,值…

CSS中如何实现弹性盒子布局(Flexbox)的换行和排序功能?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 换行(Flexbox Wrapping)⭐ 示例:实现换行⭐ 排序(Flexbox Ordering)⭐ 示例:实现排序⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得…

分布式集群框架——有关zookeeper的面试考点

3.掌握Zookeeper的概念 当涉及到大规模分布式系统的协调和管理时,Zookeeper是一个非常重要的工具。 1. 分布式协调服务:Zookeeper是一个分布式协调服务,它提供了一个高可用和高性能的环境,用于协调和同步分布式系统中的各个节点…

Java中支持分库分表的框架/组件/中间件简介

文章目录 1 sharding-jdbc2 TSharding3 Atlas4 Cobar5 MyCAT6 TDDL7 Vitess 列举一些比较常见的,简单介绍一下: sharding-jdbc(当当) TSharding(蘑菇街) Atlas(奇虎360) Cobar&#…

X5R 和 X7R 电容的定义与区别

1. 定义 采用 字母 - 数字 - 字母 格式电容材质定义用于2 类和 3 类电介质的电容器。X5R 和 X7R属于 2 类,Y5V 属于 3 类。 2. 区别 在 字母 - 数字 - 字母 格式定义下,X5R 和 X7R 材质的区别如下: 第一个字符表示电容器可以承受的最低温…

k8s(kubernetes)介绍篇

一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对…

面试题--从键盘输入网站到网页显示,之间发生了什么

文章目录 首先进入HTTP阶段协议栈阶段TCP阶段IP阶段MAC网卡交换机路由器抵达 首先进入HTTP阶段 1.解析对应的URL,访问一个对应的服务器xxx.com的一个文件index.html; 2 使用DNS查询对应的ip地址,通过DNS服务器进行查找 3 组装http报文,生成h…

低成本32位单片机电动工具无感方波控制方案

RAMSUN介绍基于灵动32位微处理器MM32SPIN0230的BLDC电动工具无感方波控制方案,包括MM32SPIN0230芯片资源。 以下是电动工具无感方波控制方案的简述: MM32SPIN0230电动工具专用板 芯片介绍 MM32SPIN0230系列是灵动微MindSPIN旗下高性能的单电机控制产品…

Spring Boot框架以及它的优势

文章目录 介绍1. **简化配置**2. **快速启动**3. **自动配置**4. **集成第三方库和框架**5. **微服务支持**6. **内嵌式数据库支持**7. **健康监控和管理**8. **可插拔的开发工具**9. **丰富的社区和生态系统**10. **良好的测试支持:** 核心特性**1. 依赖注入&#…

ElasticSearch学习4--复杂查询

1、查询分类 查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query 根据单个字段…

yolov8机器视觉-工业质检

使用训练好的模型进行预测 yolo predict taskdetect model训练好的模型路径 source测试图片文件夹路径 showTrue效果展示 切换模型进行训练(yolov8s) 修改main.py训练参数文件 使用云gpu进行训练,很方便:点击链接转至在线云gpu…

面试被打脸,数据结构底层都不知道么--回去等通知吧

数据结构之常见的8种数据结构: -数组Array -链表 Linked List -堆 heap -栈 stack -队列 Queue -树 Tree -散列表 Hash -图 Graph 数据结构-链表篇 Linklist定义: -是一种线性表,并不会按线性的顺序存储数据,即逻辑上相邻…

初识PHP编程:探索Web开发的起点

初识PHP编程:探索Web开发的起点 PHP(Hypertext Preprocessor)是一种广泛使用的服务器端脚本语言,专门用于Web开发。它的强大功能和简单易学的语法使得它成为初学者和专业开发者的首选。在本文中,我们将探索什么是PHP&…

【算法竞赛宝典】语言之争

【算法竞赛宝典】语言之争 题目描述代码展示 题目描述 代码展示 //语言之争 #include<fstream> #include<string>using namespace std;ifstream cin("language.in"); ofstream cout("language.out");string a; int n;int main() {int i;bool …

短信验证码服务

使用的是 阿里云 阿里云官网 1.找到 左上角侧边栏 -云通信 -短信服务 2.在快速学习测试处 &#xff0c;按照步骤完成快速学习&#xff0c;绑定要测试的手机号&#xff0c;选专用 【测试模板】&#xff0c;自定义模板需要人工审核&#xff0c;要一个工作日 3.右上角 获取 Acces…

敦煌网、newegg店铺优化三大方法,测评补单原来可以这样做

我们都知道敦煌网、newegg流量是一个店铺的血液&#xff0c;没有流量的支撑&#xff0c;其他也都将成为浮云。流量能够成为转化率的保证&#xff0c;如何让店铺拥有傲人的流量成为重要之重&#xff0c;店铺的流量又主要来源于以下几部分&#xff1a; 一、主要流量的来源 1.搜索…

Redis----取代RabbitMq 和 Kafka的解决方案

背景 已知rabbitmq和kafka作为消息中间件来给程序之间增加异步消息传递功能&#xff0c;这两个中间件都是专业的&#xff0c;功能也很强&#xff0c;但是有的时候过于复杂&#xff0c;对于只有一组消费者的消息队列&#xff0c;使用Redis 就可以轻松搞定。 异步消息队列 读者…

PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied

#gitlab-runner 执行代码git pull origin xxx 更新时候报 error: unable to unlink old ‘.gitlab-ci.yml’: Permission denied 问题环境&#xff1a;centos 部署gitlab-runner 执行脚本方式 选的shell 产生问题的原因&#xff1a;gitlab-runner程序进程占用锁定了.gitlab-ci…