学习Rust的第二天:Cargo

We dive into Cargo, the powerful and convenient build system and package manager for Rust.
基于Steve Klabnik的《The Rust Programming Language》一书,我们深入了解Cargo,这是Rust强大而方便的构建系统和包管理器。

6e70ec5165d195dde7cb65971a609ea0.jpeg

 

Cargo is a robust and efficient build system and package manager for Rust, designed to help manage project dependencies and ensure consistent builds across various environments.
Cargo是Rust的一个强大而高效的构建系统和包管理器,旨在帮助管理项目依赖关系,并确保在各种环境中构建一致。

To create a new program with cargo :
要使用cargo创建新程序,请执行以下操作:

$ cargo new main

$ cd main

$ ls

Directory Structure : 目录结构:

 

main
└── target
    └── debug
    └── release
└── src
    └── main.rs
├── Cargo.toml

In the created directory structure:
在创建的目录结构中:

  • main is the root directory of the program.
    main 是程序的根目录。
  • Cargo.toml contains metadata about the project and its dependencies.
    Cargo.toml 包含关于项目及其依赖项的元数据。
  • src is a directory containing the source code of the program.
    src 是包含程序源代码的目录。
  • main.rs is the main entry point to the program. This is where the main function is defined which is the entry point of the program.
    main.rs 是程序的主要入口点。这是定义main函数的地方,它是程序的入口点。
  • target is the directory that stores all the builds or outputs.
    target 是存储所有构建或输出的目录。

The important files : 重要文件:

The Cargo.toml file looks like this:
Cargo.toml 文件看起来像这样:

[package]
name = "main"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"
[dependencies]

The [package] section defines the package name, version, authors, and edition. The [dependencies] section is where you list your project dependencies.
[package] 部分定义了软件包名称、版本、作者和版本。 [dependencies] 部分是您列出项目依赖项的地方。

The main.rs file looks like this:
main.rs 文件看起来像这样:

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

This is a simple Rust program that prints “Hello, world!” to the console.
这是一个简单的Rust程序,打印“Hello,world!”到控制台

To build and run your program, navigate to the project directory (in this case, main) and run cargo run.
要构建并运行程序,请导航到项目目录(在本例中为 main )并运行 cargo run 。

$ cd main
$ cargo run

This command builds your project and runs the resulting binary.
此命令生成项目并运行生成的二进制文件。

And that’s the basic structure and workflow of a Cargo program in Rust!
这就是Rust中Cargo程序的基本结构和工作流!

Some other useful cargo commands :
其他一些有用的cargo命令:

  • cargo build : used to build for testing (Output directory : target/debug)
    cargo build :用于构建测试(输出目录: target/debug )
  • cargo build --release : used to build for release (Output directory : target/debug)
    cargo build --release :用于构建发布(输出目录: target/debug )
  • cargo check : to check if the program would compile without actually compiling it.
    cargo check :检查程序是否可以编译,而无需实际编译。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode算法——双指针篇

宫侑的发球最终进化为三刀流&#xff0c;那么我的题解也未必要循规蹈矩! 1、验证回文串 题目描述&#xff1a; 解法&#xff1a; 这题官方给的关于双指针的题解都用到了多个库函数&#xff0c;如 tolower(大写字母转小写)、isalnum(判断一个字符是否是 字母 或者 十进制数字 )…

优化策略:企业海量文件传输事件处理(下)

在探讨了文件传输事件通知的重要性之后&#xff0c;本文将着重阐述镭速技术如何通过策略优化来增强企业处理大规模文件传输任务的能力。 大规模文件传输的挑战 在初期设计事件通知功能时&#xff0c;为了迅速适应市场需求&#xff0c;并未充分考虑各种可能性&#xff0c;而是采…

关于UCG游戏平台的一些思考

UCG游戏平台&#xff0c;全称User Generated Content&#xff0c;即用户生成内容。它涵盖了所有玩家可以自主编辑的部分&#xff0c;包含并不限于换装、捏脸、关卡摆放等内容。 UCG概念在最近又火了起来&#xff0c;但这个模式出现的并不早。早在10多年前&#xff0c;war3编辑器…

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

手动实现简易版RPC(上)

手动实现简易版RPC(上) 前言 什么是RPC&#xff1f;它的原理是什么&#xff1f;它有什么特点&#xff1f;如果让你实现一个RPC框架&#xff0c;你会如何是实现&#xff1f;带着这些问题&#xff0c;开始今天的学习。 本文主要介绍RPC概述以及一些关于RPC的知识&#xff0c;为…

UI设计解析:入门必读,透彻理解UI的核心概念

UI用户界面是什么&#xff1f; UI是用户界面的缩写。UI是用户与设备、网站或应用程序交互的媒介。目标是使用户体验简单直观。用户只需尽量得到预期的结果。 用户界面是建立在吸引人类感官&#xff08;视觉、触觉、听觉等&#xff09;的交互层中的。它不仅包括键盘、鼠标、触…

Linux系统概述与安装

Linux的介绍 Linux内核 Linux内核是 Linux 操作系统主要组件&#xff0c;也是计算机硬件与其软件之间的交互入口。它负责两者之间的通信&#xff0c;还要尽可能高效地管理资源 Linux Shell shell是系统的用户界面&#xff0c;提供了用户与内核进行交互操作的一种接口 Linux文…

kubekey 离线安装harbor、k8s、kubesphere

目录 参考文献 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件 安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集群和kubesphere 手动安装依…

子域名是什么?有什么作用?

在互联网世界中&#xff0c;域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名&#xff0c;其中有些大型公司的网站还不止一个域名&#xff0c;除了主域名外还拥有子域名。有些人感到非常困惑&#xff0c;不知道子域名是什么。其实子域名也就是平时所说的二级域…

AI绘本生成解决方案,快速生成高质量的AI绘本视频

美摄科技凭借其深厚的技术积累和前瞻性的市场洞察力&#xff0c;近日推出了一款面向企业的AI绘本生成解决方案&#xff0c;旨在通过智能化、自动化的方式&#xff0c;帮助企业快速将文字内容转化为生动有趣的绘本视频&#xff0c;从而提升内容传播效率&#xff0c;增强品牌影响…

openssl密钥证书管理(Key and Certificate Management)

前言 前两日应别人要求提供一份CSR文件过去&#xff0c;方便他们生成相关证书&#xff0c;对于这一块本来也不熟&#xff0c;于是找到openssl官网&#xff0c;想找找相关的教程看看&#xff0c;一番小找&#xff0c;果有收获&#xff0c;是个宝藏&#xff0c;源文档在这…

AI 对话完善【人工智能】

AI 对话【人工智能】 前言版权开源推荐AI 对话v0版本&#xff1a;基础v1版本&#xff1a;对话数据表tag.jsTagController v2版本&#xff1a;回复中textarea.jsChatController v3版本&#xff1a;流式输出chatLast.jsChatController v4版本&#xff1a;多轮对话QianfanUtilChat…

1、Qt UI控件 -- qucsdk

前言&#xff1a;Qt编写的自定义控件插件的sdk集合&#xff0c;包括了各个操作系统的动态库文件以及控件的头文件和sdk使用demo。类似于Wpf中的LivChart2控件库&#xff0c;都是一些编译好的控件&#xff0c;可以直接集成到项目中。该控件是飞扬青云大神多年前开发的&#xff0…

从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录 一、写组件1、注册全局组件方法2、组件13、组件2 二、测试三、发布1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和更新2、注意事项 一、写组件 确定组件库的需求和功能&#xff1a;在开始构建组件库之前&#xff0c…

三相整流桥器件选型计算方法-电压与电流计算公式

三相整流桥的选型主要涉及到两个关键参数&#xff1a;电压和电流。以下是电压与电流的计算公式及选型方法&#xff1a; 电压计算&#xff1a; 输入交流电压有效值&#xff08;Vrms&#xff09;是选择整流桥的重要参考。整流桥的额定电压&#xff08;Vrrm&#xff09;应至少为输…

echarts tooltip提示框显示不全

一、背景&#xff1a; 写在前面&#xff1a; 自行封装。一个可由多个柱形图叠加而成的图表&#xff0c;命名为someHoverLine(可自定义)。 下面罗列了移动端和web端的封装组件代码&#xff1b; 展示了vue2、uniapp、vue3的不同封装和使用案列。 二、问题描述&#xff1a; 三、解…

数组常用方法

for循环 使用计数器变量来迭代数组元素 var arr [1,2,3,4,5]for(var i0;i<arr.length;i){console.log(array[i]) }上面的i就是计数器变量&#xff0c;初始值为0&#xff0c;每次循环后加1&#xff0c;直到i等于数组长度为止。在循环体内&#xff0c;可以通过数组索引arr[…

C 强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#xff0c;如下所示&am…

攻防演练 | redis艰难写shell进入内网

背景 某地市级攻防演练 要求 拿到指定单位的靶标系统&#xff08;必须是web后台管理权限数据库服务器&#xff09; 正式开始 redis未授权 首先通过信息收集获取到了一些IP&#xff0c;且发现一个IP中存在redis未授权。 此时兴冲冲的去尝试写入定时任务反弹shell&#xff…