懂你,更懂Rust系列之Cargo

lgli

共 1597字,需浏览 4分钟

 ·

2021-01-07 12:27

我习惯在包里藏一瓶百无聊赖
打发人间的白云和苍狗
设计睡着的未来
我庆幸那些难堪正中我的下怀
让我怀疑我的存在
最后笑了起来


上一次,描述了Rust的安装环境,及其环境配置,同时编写了第一个Rust程序"Hello World",需要回忆下的,点击传送门

懂你,更懂Rust系列之环境搭建


第一个Rust程序是比较简单的程序了,一般来说,写一个程序,可能需要添加更多的依赖包,帮助程序的运行,同时也避免闭门造车。类似Java的maven构建程序,Rust也有属于自己的项目管理和包管理器,这就是--

Cargo


按照上文提到的环境搭建,是已经安装好了Cargo的,

可以检查下 cmd命令"Cargo  --version"


bd7abe8c391babcc017ce2d9747540cc.webp


如果没有出现版本相关信息,请自行安装Cargo


下面,用Cargo创建新项目,看看和前面的有哪里不同


打开一个专门存放Rust项目的位置


我这里是D盘,rustwork


f7b2c90c39f199fa706b27e70c97858a.webp



创建一个first-cargo


7e79733f8cff5a55472c43880340686c.webp


进入该项目


3eaf973f09cefbe62bcb2bb5f1bea57d.webp


查看项目信息


b0c4b7c7a31bbd5f803a4110e01ac170.webp



可以看见Cargo给创建了2个文件和一个src文件夹


其中一个.gitignore是创建的基于git远程项目的文件信息,如果在现有的Git仓库中运行Cargo,将不再会生成.gitignore文件,可以使用命令

cargo new——vcs=git

来覆盖


另外一个Cargo.toml,打开看看这个文件


fab14664ccb23b425d859926aa0d8edc.webp


这里描述了项目版本和作者相关信息


[dependencies]可以增加更多的依赖,这里先不讲述如何增加依赖,在以后的章节中会描述如何添加依赖



打开生成的src文件夹


75eb1442a4e625d38f65eb320c400873.webp


这里有一个生成好的main.rs文件,


这里,编写这个文件,直接输出"Hello Cargo"


ed15c32157cfa50cd7462de476249fa3.webp


下面是构建这个Cargo项目:


5bc63629f06ead34078fa4a6e7c73770.webp


这就表示构建成功了


构建完成后,在项目根目录下,可以发现多了一个文件夹:


0ae65b1e30a0b54217ec12b736916f65.webp


这个target中会包含编译后的信息


进入到target/debug中,可以看到编译后的可执行文件first-cargo.exe

<注意区别Mac和Linux,前面环境搭建中说过>


1eb26f01eaa3327699966e1fff5975ed.webp


这里执行这个可执行文件


6038c891a060137ced3923330402dc0f.webp



也可以通过直接Cargo命令运行


28a8931c250c7dd9c80c4dde81aa15a7.webp



此时可以看见,没有看见编译的过程,因为这时候没有对文件进行改变,所以没有编译的过程


这时,改变下main.rs文件


f33146a963fcd067c60dfa86e0790c5c.webp



运行


f7392a240ce82e2ed261d5029b000c01.webp


这里可以看见编译的步骤


关于Cargo,还要一个命令就是cargo check


4819119d97899ab0a0d12a475589fc48.webp


cargo check,顾名思义,只检查编辑的代码文件,并不会产生可执行文件,只是确保代码可被build,所以check要比build快很多


当代码编写完毕,准备编译发布的时候,可以使用命令进行优化编译:


81f09e7fd70cdaa21589df1947fe1fcd.webp


此时,在target下面会生成一个release文件夹


80b02a49ad5379d05d56e127b0005230.webp


这个release是之前没有的(前面不是在debug文件夹中找到可执行文件的嘛)


6d988b770ce0f2be188bf2c6237ce7fb.webp


在这里也可以看见被优化编译后的可执行文件



Rust实战--小游戏


通过前面环境搭建和本节的Cargo构建项目,这里先来一个实战Rust小项目

练练手



创建一个Cargo项目--> first-guess


58344edccb4a8a4a00dcb9f8f4e68764.webp


进入项目文件夹编写代码


默认创建的main.rs文件会有默认的一行代码:


92f8c5e0f1b9152bf6984bc160e75050.webp


这里因为代码量比较多了,就不用命令行写了,先用文本编辑器编写<后面会介绍几种IED>


a4b9c54c15a8e0d3e4e4cbbe339398b1.webp

    

这里先直接把上图代码写到main.rs文件中


编译运行:


fc773c864df185e10c65c4b8fe276f44.webp


简单对上面代码做个说明


第1行:use std::io 这是指使用到Rust标准语言库,这里因为需要获取用户键盘输入数据,所以需要用到IO库

第8行:let mut guess = String::new() 这是指定义一个可变变量<这里先了解这个词语,后面说Rust语法和数据类型会详细说到>guess来接收用户输入的一个数字,这里定义的字符串来接收,所以只要你输入的可转化为字符串,程序都是可以的,不会抛出异常。

第10-12行:

io::stdin()

        .read_line(&mut guess)

        .expect("读取异常")

调用IO库读取用户输入的数字,或抛出异常





今日就先到这儿了,后续Rust语法和数据类型



有喜欢的欢迎关注转发



浏览 46
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报