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

2024 Rust现代实用教程:1.2编译器与包管理工具以及开发环境搭建

文章目录

  • 一、Rust的编译器rustc
  • 二、开发环境搭建
  • 三、Rust的包管理工具Cargo
  • 四、项目结构
    • 1.Cargo.toml文件
    • 2.创建一个可执行文件项目
    • 3.创建一个库项目
  • 参考

一、Rust的编译器rustc

·查看版本

rustc-version

·编译生成二进制文件

rustc -o output filename filename.rs

·编译生成库文件

rustc --crate-type lib filename.rs
fn main()
{println!("Hello, world!");
}

编译及运行

▶ rustc main.rs -o main
▶ ./main 
Hello, world!

二、开发环境搭建

vscode

  • rust-analyzer
  • Error Lens(错误提示)

运行以下命令去安装 Rust-Analyzer:

Nightly Toolchain
rustup component add rust-analyzer-preview

rustup 会将 rust-analyzer 安装到以下路径:

which rust-analyzer 
/home/wangji/.cargo/bin/rust-analyzer

这样的好处是 rust-analyzer 会跟随rustup rustc 一起更新,也能在不同 rustc 版本的项目中用相应版本的rust-analyzer.

配置在vscode中
在这里插入图片描述

在这里插入图片描述

参考:

  • VS Code 配置 Rust-Analyzer

三、Rust的包管理工具Cargo

方式1:
隐式地使用rustc进行编译

方式2:

・创建

cargo new project name
cargo new --lib project name创建一个新的Rust库项目的

构建项目(生成二进制可执行文件或库文件)

cargo build
cargo build-release为生成优化的可执行文件,常用于生产环境

检测

  • 检测项目是否有错误
cargo check

·运行/测试

会运行两步

  • cargo run实际是先执行cargo build,再执行二进制文件
  • cargo test是库项目的执行命令
cargo runcargo test

四、项目结构

库项目

project name/
----Cargo.toml
----src/-----lib.rs

二进制项目

project name/
----Cargo.toml
----src/------main.rs

1.Cargo.toml文件

package

  • 设置项目名
  • 版本等

dependencies

  • 设置依赖
  • [build-dependencies]列出了在构建项目时需要的依赖项(一般是适配环境,比如cargo build适配这个环境)
  • [dev-dependencies]列出了只在开发时需要的依赖项(一般是测试需要加载的依赖项)

在这里插入图片描述

2.创建一个可执行文件项目

cargo run等价于cargo build+执行二进制文件

cargo new project
▶ cargo runCompiling project v0.1.0 (/home/wangji/code/rust/project)Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.71sRunning `target/debug/project`
Hello, world!

在这里插入图片描述

cargo build --release优化后的二进制文件

▶ cargo build --releaseCompiling project v0.1.0 (/home/wangji/code/rust/project)Finished `release` profile [optimized] target(s) in 0.10s

cargo check检查项目的配置是否有问题

▶ cargo checkChecking project v0.1.0 (/home/wangji/code/rust/project)Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.21s

3.创建一个库项目

▶ cargo new --lib project_libCreating library `project_lib` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
➜ project ⚡( master)                                                                                                   

在这里插入图片描述

运行cargo test

▶ cargo testCompiling project_lib v0.1.0 (/home/wangji/code/rust/project_lib)Finished `test` profile [unoptimized + debuginfo] target(s) in 7.44sRunning unittests src/lib.rs (target/debug/deps/project_lib-931d5b2ee036b7d3)running 1 test
test tests::it_works ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sDoc-tests project_librunning 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s➜ project_lib ⚡( master)                                     

参考

  • 2024 Rust现代实用教程

相关文章:

2024 Rust现代实用教程:1.2编译器与包管理工具以及开发环境搭建

文章目录 一、Rust的编译器rustc二、开发环境搭建三、Rust的包管理工具Cargo四、项目结构1.Cargo.toml文件2.创建一个可执行文件项目3.创建一个库项目 参考 一、Rust的编译器rustc 查看版本 rustc-version编译生成二进制文件 rustc -o output filename filename.rs编译生成库…...

人工智能原理实验一:知识的表示与推理实验

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对智能程序、智能算法等有…...

自学C语言——VS实用调试技巧总结

接上一篇:自学C语言——扫雷游戏(无递归) 什么是bug “bug”本意是昆虫或虫子,一般指电脑系统或程序中,隐藏着一些未被发现的缺陷或者问题,简称程序漏洞。 第一代的计算机是由许多庞大且昂贵的真空管组成&…...

VC2012创建弹出式菜单

首先为视类添加鼠标右键单击处理函数,添加如下代码, void CMFCApplication1View::OnRButtonDown(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值CView::OnRButtonDown(nFlags, point);CMenu menu;menu.CreatePopupMenu…...

Google 第三季度季报出炉

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

入职总结(更新中)

【STEP 1/3】短信1之后:材料准备阶段 填写 新进教职工“入职一件事”线上办理 系统档案转递证明(需档案到校); 档案:为规范管理,请拟报到人员将个人档案寄至浙江财经大学人事处,有专职人员进行…...

@DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录

代码例子,有注释大家可以自己试一下 RestController RequestMapping(value "demo") public class TestController {//Content-Type:application/x-www-form-urlencoded;表单提交form-dataPostMapping("/demo1")public String test…...

unity 中使用zeroMq和Mqtt 进行通讯

最近我在做一个车上的HMI项目,也就是车机应用,需要与云端和域控进行通信。HMI的功能已经外包了,但消息的统一层留给我自己来做。因为项目组其他人都没有经验,所以这个任务就落到了我头上,尽管我自己也没有太多经验&…...

四、k8s快速入门之Kubernetes资源清单

kubernetes中的资源 ⭐️ k8s中所有的内容都抽象为资源,资源实列化之后,叫做对象 1️⃣名称空间级别 ⭐️ kubeadm在执行k8s的pod的时候会在kube-system这个名称空间下执行,所以说当你kubectl get pod 的时候是查看不到的查看的是默认的po…...

掌握ElasticSearch(六):分析过程

文章目录 一、什么是分析1. 字符过滤 (Character Filtering)2. 分词 (Breaking into Tokens)3. 词条过滤 (Token Filtering)4. 词条索引 (Token Indexing) 二、内置分析器分类1. 标准分析器 (Standard Analyzer)2. 简单分析器 (Simple Analyzer)3. 语言分析器 (Language Analyz…...

【设计模式】使用python 实践框架设计

单一职责原则(SRP):一个类应该只有一个职责,意味着该类只应该有一个引起变化的原因。这使得代码更易于维护和理解。 开放封闭原则(OCP):软件实体(类、模块、函数等)应该…...

Apache paimon-CDC

CDC集成 paimon支持五种方式通过模式转化数据提取到paimon表中。添加的列会实时同步到Paimon表中 MySQL同步表:将MySQL中的一张或多张表同步到一张Paimon表中。MySQL同步数据库:将MySQL的整个数据库同步到一个Paimon数据库中。API同步表:将您的自定义DataStream输入同步到一…...

如何分析算法的执行效率和资源消耗

分析算法的执行效率和资源消耗可以从以下几个方面入手: 一、时间复杂度分析 定义和概念 时间复杂度是衡量算法执行时间随输入规模增长的速度的指标。它通常用大 O 符号表示,表示算法执行时间与输入规模之间的关系。例如,一个算法的时间复杂度为 O(n),表示该算法的执行时间…...

提示工程(Prompt Engineering)指南(进阶篇)

在 Prompt Engineering 的进阶阶段,我们着重关注提示的结构化、复杂任务的分解、反馈循环以及模型的高级特性利用。随着生成式 AI 技术的快速发展,Prompt Engineering 已经从基础的单一指令优化转向了更具系统性的设计思维,并应用于多轮对话、…...

音视频入门基础:FLV专题(19)——FFmpeg源码中,解码Audio Tag的AudioTagHeader,并提取AUDIODATA的实现

一、引言 从《音视频入门基础:FLV专题(18)——Audio Tag简介》可以知道,未加密的情况下,FLV文件中的一个Audio Tag Tag header AudioTagHeader AUDIODATA。本文讲述FFmpeg源码中是怎样解码Audio Tag的AudioTagHead…...

前端零基础入门到上班:【Day3】从零开始构建网页骨架HTML

HTML 基础入门&#xff1a;从零开始构建网页骨架 目录 1. 什么是 HTML&#xff1f;HTML 的核心作用 2. HTML 基本结构2.1 DOCTYPE 声明2.2 <html> 标签2.3 <head> 标签2.4 <body> 标签 3. HTML 常用标签详解3.1 标题标签3.2 段落和文本标签3.3 链接标签3.4 图…...

字符脱敏工具类

1、字符脱敏工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils;/*** 数据脱敏工具类** date 2024/10/30 13:44*/Slf4j public class DataDesensitizationUtils {public static final String STAR_1 "*";public static final …...

【jvm】jvm对象都分配在堆上吗

目录 1. 说明2. 堆上分配3. 栈上分配&#xff08;逃逸分析和标量替换&#xff09;4. 方法区分配5. 直接内存&#xff08;非堆内存&#xff09; 1. 说明 1.JVM的对象并不总是分配在堆上。2.堆是JVM用于存储对象实例的主要内存区域&#xff0c;存在一些特殊情况&#xff0c;对象…...

@AutoWired和 @Resource原理深度分析!

嗨&#xff0c;你好呀&#xff0c;我是猿java Autowired和Resource是 Java程序员经常用来实现依赖注入的两个注解&#xff0c;这篇文章&#xff0c;我们将详细分析这两个注解的工作原理、使用示例和它们之间的对比。 依赖注入概述 依赖注入是一种常见的设计模式&#xff0c;…...

C++设计模式创建型模式———原型模式

文章目录 一、引言二、原型模式三、总结 一、引言 与工厂模式相同&#xff0c;原型模式&#xff08;Prototype&#xff09;也是创建型模式。原型模式通过一个对象&#xff08;原型对象&#xff09;克隆出多个一模一样的对象。实际上&#xff0c;该模式与其说是一种设计模式&am…...

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE&#xff1f;2. Spring Boot 3 响应式编程与 SSE为什么选择响应式编程实现 SSE&#xff1f; 3. 实现 SSE 的基本步骤3.…...

YOLO即插即用模块---AgentAttention

Agent Attention: On the Integration of Softmax and Linear Attention 论文地址&#xff1a;https://arxiv.org/pdf/2312.08874 问题&#xff1a; 普遍使用的 Softmax 注意力机制在视觉 Transformer 模型中计算复杂度过高&#xff0c;限制了其在各种场景中的应用。 方法&a…...

探索开源语音识别的未来:高效利用先进的自动语音识别技术20241030

&#x1f680; 探索开源语音识别的未来&#xff1a;高效利用自动语音识别技术 &#x1f31f; 引言 在数字化时代&#xff0c;语音识别技术正在引领人机交互的新潮流&#xff0c;为各行业带来了颠覆性的改变。开源的自动语音识别&#xff08;ASR&#xff09;系统&#xff0c;如…...

学习路之TP6--workman安装

一、安装 首先通过 composer 安装 composer require topthink/think-worker 报错&#xff1a; 分析&#xff1a;最新版本需要TP8&#xff0c;或装低版本的 composer require topthink/think-worker:^3.*安装后&#xff0c; 增加目录 vendor\workerman vendor\topthink\think-w…...

.NET内网实战:通过白名单文件反序列化漏洞绕过UAC

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03原理分析 在渗透测试和红…...

AI Agents - 自动化项目:计划、评估和分配

Agents: Role 角色Goal 目标Backstory 背景故事 Tasks&#xff1a; Description 描述Expected Output 期望输出Agent 代理 Automated Project: Planning, Estimation, and Allocation Initial Imports 1.本地文件helper.py # Add your utilities or helper functions to…...

Git的.gitignore文件

一、各语言对应的.gitignore模板文件 项目地址&#xff1a;https://github.com/github/gitignore 二、.gitignore文件不生效 .gitignore文件只是ignore没有被追踪的文件&#xff0c;已被追踪的文件&#xff0c;要先删除缓存文件。 # 单个文件 git rm --cached file/path/to…...

网站安全,WAF网站保护暴力破解

雷池的核心功能 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量&#xff0c;功能包括&#xff1a; SQL 注入保护&#xff1a;防止恶意 SQL 代码的注入&#xff0c;保护网站数据安全。跨站脚本攻击 (XSS)&#xff1a;阻止攻击者在用户浏览器中执行恶意脚本。暴力破解防护&a…...

深度学习:梯度下降算法简介

梯度下降算法简介 梯度下降算法 我们思考这样一个问题&#xff0c;现在需要用一条直线来回归拟合这三个点&#xff0c;直线的方程是 y w ^ x b y \hat{w}x b yw^xb&#xff0c;我们假设斜率 w ^ \hat{w} w^是已知的&#xff0c;现在想要找到一个最好的截距 b b b。 一条…...

SparkSQL整合Hive后,如何启动hiveserver2服务

当spark sql与hive整合后&#xff0c;我们就无法启动hiveserver2的服务了&#xff0c;每次都要先启动hive的元数据服务&#xff08;nohup hive --service metastore&#xff09;才能启动hive,之前的beeline命令也用不了&#xff0c;hiveserver2的无法启动&#xff0c;这也导致我…...

电影日记网站怎么做/二十个优化

两个引用指向同一个对象的内存图 转载于:https://www.cnblogs.com/cherish010/p/10278414.html...

wordpress文章插件/推广公司产品

生命周期分三个状态 mounting(组件挂载阶段) updating(组件更新) unmounting(组件移除) props与state 生命周期分四个阶段 创建阶段 实例化阶段 getInitialState componentWillMount render componentDidMount 更新状态 componentWillReceiveProps shouldComponentUpdate compo…...

福州网站建设 大公司/一级域名生成二级域名

1.1.1 了解电子邮件系统&#xff1a;电子邮件系统是一种能够书写、发送、存储和接受信件的电子邮件系统。邮件系统通常都是采用存储转发机制来实现邮件通讯的。意思就是说&#xff1a;“邮件发送者可以随时随地的发送邮件&#xff0c;不要求邮件接收者同时在线&#xff0c;邮件…...

网站建设员性质/seo没什么作用了

session中存入的是基本类型&#xff08;int之类的&#xff09;和引用类型&#xff08;对象&#xff09;是不一样的。 1。基本类型情况 session.setAttribute("test"&#xff0c;1) -------》Object test session.getAttribute("test") -------》test 2 …...

学做家常菜的网站 知乎/黄桃图片友情链接

制度设计绩效积分奖励制度建立在企业科学有效的绩效考核的基础上&#xff0c;对员工绩效实行积分&#xff0c;绩效积分形成“福利购买力”&#xff0c;在购买力达到一定水平后&#xff0c;员工可以凭借获得的购买力获取企业提供的弹性福利。企业通过绩效考核对员工进行杰出、优…...

做网站比较专业的公司/一个产品的网络营销方案

1. git 本地项目关联远程项目, 并推送到远程新分支(推送时在远程新建立一个分支) 1.1 在git bash 中或其他命令行中进入本地项目文件夹 1.2 创建本地仓库 git init .注意后面的 . 意思是当前目录&#xff0c;不能省略 1.3 把本地项目提交到本地仓库&#xff1a; #先把当前…...