当前位置:网站首页>【Rust指南】使用Cargo工具高效创建Rust项目 | 理解Rust特别的输入输出语句
【Rust指南】使用Cargo工具高效创建Rust项目 | 理解Rust特别的输入输出语句
2022-08-10 06:51:00 【微凉秋意】

文章目录
前言
本文紧跟上篇Rust博文内容,讲解Cargo工具在Rust项目创建时的妙用,手把手教你使用Cargo工具在黑窗口创建项目。此外,创建项目之后,简单的做一个Rust语言中输入输出的测试,上文提到学好Rust语言的方法就是一步一步打基础,因此仍要潜心修炼,打牢基础。
一、功能强大的Cargo工具
1、Cargo工具是什么?
Cargo是Rust 的构建系统和包管理工具,主要功能包括:- 创建和管理 Rust 的模块系统
- 下载和管理依赖库
- 调用rustc或其他构建工具来构建项目
- 安装Rust 的时候会自动安装Cargo
- 验证的命令:
cargo --version
- 验证的命令:
2、使用Cargo命令创建 hello_cargo 项目
- 命令:
cargo new hello_cargo
其中code .是VSC工具的命令,意思是使用他来打开项目文件:
可以看到Cargo工具为我们生成了其他的文件,具体看一下都是什么作用:
- 自动创建了一个新目录
hello_cargo,包含:- Cargo.toml
- src目录
main.rs
- 初始化了一个新的Git仓库:
.gitignore- 可以使用其他的
vcs(版本控制系统) - 或者不适用vcs:
cargo new 项目名 --vcs
- 可以使用其他的
3、项目文件目录里各文件的内容和特点
Cargo.toml
- TOML(Tom’s Obvious,Minimal Language)格式,存放Cargo的配置

[package],是一个区域标题,表示下方内容是用来配置包的(package)- name:项目名
- version:项目版本
- edition:使用的Rust版本
[dependencies]- 另一个区域的开始,它会列出项目的依赖项。
- 在Rust里,代码的包写做:
crate
- TOML(Tom’s Obvious,Minimal Language)格式,存放Cargo的配置
src/main.rs
- cargo生成的
main.rs在src目录下,此外源代码都应该放在src目录下 - 而
cargo.toml在项目顶层下 - 顶层目录可以放置:RENAME、许可信息、配置文件等
- 将非cargo创建的项目转化为cargo的方法:
- 把源代码移动到src里面
- 创建cargo.toml并填写相应的配置
- cargo生成的
Cargo.lock
- 第一次执行
Cargo build命令会在顶层目录生成 cargo.lock文件- 该文件负责追踪项目依赖的精确版本
- 不需要手动修改此文件
- 第一次执行
4、Cargo 常用命令
cargo build- 创建可执行文件:
target\debug\hello_cargo.exe
- 创建可执行文件:
cargo run- 构建和运行cargo项目,编译代码+执行结果
- 如果之前编译过且源码没有发生改变,则会直接运行二进制文件
cargo check- 检查代码,确保能够通过编译,但是不产生任何可执行文件
- cargo check 要比 cargo build 快得多
- 编写代码得时候可以周期性得使用cargo check命令检查代码,提高效率
cargo build --release- 一共两种配置:
- 开发使用 :
cargo build - 正式发布:
cargo build --release
- 开发使用 :
- 为发布构建,编译时会进行优化
- 代码运行速度会更快,但是编译时间长
- 会在
target/release目录下生成可执行文件,而不是 target/debug
- 一共两种配置:
二、Rust 语言的输入输出
1、输入输出测试
源码:
use std::io;
fn main() {
println!("测试输入输出功能");
println!("从键盘输入一个数字:");
let mut a=String::new();
io::stdin().read_line(&mut a).expect("无法读取行");
println!("输出结果为:{}",a);
}
运行效果:

2、具体代码解析
接下来把不熟悉的代码依次解释:
let mut a=String::new();
let用来声明变量,mut代表该变量值可修改,String::new()意思是调用String类的实例。
- 在Rust 中默认变量不可修改,加上mut 才可以被修改
- new 在Rust 中常用来创建类型实例
- 这句话的意思就是将一个空白的字符串绑定到可变的字符串变量a上
use std::io;
io::stdin().read_line(&mut a).expect("无法读取行");
use用来引入库,std::io在Rust 中代表标准的输入输出,整体可理解为c中的#include<stdio.h>,
在io库调用stdin()类里的read_line()方法,而该方法需要传入可变字符串,因此将&mut a传入,
为什么要加地址符&呢,这里啊用到了C++里的引用,这样参数列表里字符串的变化会修饰实参a的变化,且不会产生副本,安全高效。最后还有一个ecpect()方法,read_line()方法会返回一个Result枚举类型,含有Ok 和 Err 两个变体。
- 如果Result返回的是
Err,那么expect()方法就会中断整行代码并打印expect里的信息。- 如果返回的是
OK,那么就会把read_line()方法中得到的值赋给OK一并返回给用户。
println!("输出结果为:{}",a);
类似于c 里的
printf("输出结果为%d",a);上面的{}是一个占位符,输出的时候会被后面变量的值取代,有几个{}后面就有多少变量。
本文有关Cargo工具的使用和Rust输入输出的分享到此结束,期待你的鼓励支持~
边栏推荐
猜你喜欢
随机推荐
高级测试:如何使用Flink对Strom任务的逻辑功能进行复现测试?
order by injection and limit injection, and wide byte injection
.NET-7.WPF学习经验总结
基于ABP的AppUser对象扩展
1413. 逐步求和得到正数的最小值
mysql数据库月增长量问题
概率分布及其应用
【MySQL】SQL语句
自动化测试框架Pytest(三)——自定义allure测试报告
卷积神经网络卷积层公式,卷积神经网络运算公式
一文2600字手把手教你编写性能测试用例
基于STC8G2K64S4单片机通过OLED屏幕显示模拟量光敏模拟值
金融证券 初级 招股书 要求 黑话1刷数 黑话2底稿 黑话3董监高
第2章 变量和基本类型读书笔记
Tencent Cloud Song Xiang: Kubernetes cluster utilization improvement practice
Excuse me.Oracle CDC connector supports LogMiner and XStream API two ways to capture
SCS【2】单细胞转录组 之 cellranger
调试ZYNQ的u-boot 2017.3 不能正常启动,记录调试过程
.NET-8.我的思想笔记
关于MongoDb查询Decimal128转BigDecimal问题







![Chapter 11 Database Design Specifications [2. Index and Tuning] [MySQL Advanced]](/img/a5/88699cf7b7fc0ca721977dc07b0602.png)

