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

【rust】cargo的概念和使用方法

啥是cargo

包管理器 cargo 提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段,与 Rust 语言及其编译器 rustc 紧密结合。

创建项目

使用cargo创建一个项目:

$ cargo new world_hello
$ cd world_hello

该项目结构如下:

$ tree
.
├── .git
├── .gitignore
├── Cargo.toml
└── src└── main.rs

运行项目

  1. cargo run

  2. 手动编译和运行项目:cargo build + ./target/debug/world_hello
    这种方式运行的是 debug 模式,在这种模式下,代码的编译速度会非常快,但运行速度就慢了. 原因是,在 debug 模式下,Rust 编译器不会做任何的优化,只为了尽快的编译完成,让你的开发流程更加顺畅。可以添加 --release 来编译生成高性能的程序:

cargo run --release
cargo build --release
./target/release/world_hello

cargo check

cargo check 是我们在代码开发过程中最常用的命令,它的作用很简单:快速的检查一下代码能否编译通过。因此该命令速度会非常快,能节省大量的编译时间。

Cargo.toml 和 Cargo.lock

Cargo.tomlCargo.lock 是 cargo 的核心文件,它的所有活动均基于此二者。

  • Cargo.toml 是 cargo 特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml

  • Cargo.lock 文件是 cargo 工具根据同一项目的 toml 文件生成的项目依赖详细清单,因此我们一般不用修改它

package 配置段落

package 中记录了项目的描述信息,典型的如下:

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

name 字段定义了项目名称,version 字段定义当前版本,新项目默认是 0.1.0,edition 字段定义了使用的 Rust 大版本

定义项目依赖

使用 cargo 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。

Cargo.toml 中,主要通过各种依赖段落来描述该项目的各种依赖项:

  • 基于 Rust 官方仓库 crates.io,通过版本说明来描述
  • 基于项目源代码的 git 仓库地址,通过 URL 来描述
  • 基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述

这三种形式具体写法如下:

[dependencies]
rand = "0.3"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/ezekielljj" }
geometry = { path = "crates/geometry" }
http://www.lryc.cn/news/189514.html

相关文章:

  • MySQL数据库——SQL优化(2)-order by 优化、group by 优化
  • C++DAY43
  • 大模型的超级“外脑”——向量数据库解决大模型的三大挑战
  • opencv读取摄像头并读取时间戳
  • WebRTC 系列(四、多人通话,H5、Android、iOS)
  • uniapp 点击 富文本元素 图片 可以预览(非nvue)
  • 【2023年11月第四版教材】第24章《法律法规与标准规范》(合集篇)
  • 提升战斗力!吃鸡行家分享顶级游戏干货,助你轻松拿下绝地求生
  • C语言练习百题之宏#define命令
  • 阿里云存储I/O性能、IOPS和吞吐量是什么意思?
  • Linux知识点 -- 网络基础 -- 数据链路层
  • git服务器宕机后,怎么用本地仓库重新建立gitlab服务器(包括所有历史版本)
  • 华为云云耀云服务器L实例评测 | 实例使用教学之综合导览
  • Elasticsearch 高级查询用法
  • 网络架构介绍
  • 第53节——Redux Toolkit初识
  • AndroidStudio报错:Plugin with id ‘kotlin-android‘ not found.
  • 【ADB】借助ADB模拟滑动屏幕,并进行循环
  • BN体系理解——类封装复现
  • 请求和响应的概述
  • (深度学习快速入门)A Gentle Introduction to Graph Neural Networks 笔记
  • VIM指令
  • Android 10.0 framework层实现app默认全屏显示
  • 【计算机网络黑皮书】传输层
  • 轻量限制流量?阿里云轻量应用服务器月流量包收费说明
  • Linux手记
  • springboot配置
  • 大数据中的一些词汇解释
  • 10月11-12日上课内容 Ansible
  • android studio 我遇到的Task :app:compileDebugJavaWithJavac FAILED问题及解决过程