【Rust指南】使用Cargo工具高效创建Rust项目 | 理解Rust特别的输入输出语句

简介: 【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

src/main.rs


cargo生成的 main.rs 在src目录下,此外源代码都应该放在src目录下

而cargo.toml在项目顶层下

顶层目录可以放置:RENAME、许可信息、配置文件等

将非cargo创建的项目转化为cargo的方法:

把源代码移动到src里面

创建cargo.toml并填写相应的配置

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);上面的{}是一个占位符,输出的时候会被后面变量的值取代,有几个{}后面就有多少变量。

相关文章
|
6天前
|
Rust 数据可视化 安全
Rust性能分析工具概览:perf、flamegraph 与其他
Rust作为一种高性能、内存安全的编程语言,在构建大型系统和微服务时备受青睐。然而,优化Rust程序的性能需要有效的工具。本文将对Rust中常用的性能分析工具进行介绍,包括perf、flamegraph等,并探讨它们如何帮助开发者定位和解决性能瓶颈。
|
6天前
|
Rust 区块链
学Rust不学Cargo,等于没学Rust:features特性详解
在 Rust 中,Cargo 的 "features" 是一种条件编译机制,允许在编译 crate 时编译部分代码。这样可以在一个 crate 中提供多个功能,并根据需要选择性地启用或禁用这些功能。
|
6天前
|
Rust Linux iOS开发
【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
43 0
|
6天前
|
存储 Rust 测试技术
【一起学Rust · 项目实战】命令行IO项目minigrep——测试驱动开发完善功能
【一起学Rust · 项目实战】命令行IO项目minigrep——测试驱动开发完善功能
100 0
|
6天前
|
Rust
【一起学Rust · 项目实战】命令行IO项目minigrep——接收命令行参数与读取文件内容
【一起学Rust · 项目实战】命令行IO项目minigrep——接收命令行参数与读取文件内容
60 0
【一起学Rust · 项目实战】命令行IO项目minigrep——接收命令行参数与读取文件内容
|
6天前
|
缓存 Rust 前端开发
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建
259 0
|
6天前
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
|
6天前
|
Rust 监控 网络协议
运用Rust编写高效的远程监控多台电脑屏幕工具
使用Rust编程语言开发远程监控多台电脑屏幕的工具,通过安装客户端实时传输屏幕截图至监控端。示例代码展示如何利用Rust的网络编程和图像处理库捕获、发送及接收屏幕截图。监控端接收到数据后可进行保存或上传等处理,实现高效可靠的远程监控解决方案。
122 2
|
6天前
|
Rust 安全 程序员
拜登:“一切非 Rust 项目均为非法”,开发界要大变天?
白宫国家网络总监办公室(ONCD,以下简称网总办)在本周一发布的报告中说道:“程序员编写代码并非没有后果,他们的⼯作⽅式于国家利益而言至关重要。”
39 1
|
6天前
|
Rust 测试技术 开发工具
Rust中的Cargo:依赖管理与项目构建
本文将深入探讨Rust编程语言中的Cargo工具。Cargo不仅用于构建Rust项目,还是管理项目依赖的关键组件。我们将了解如何使用Cargo创建新项目、添加依赖项、以及如何通过Cargo进行构建和测试,从而确保项目的顺利开发与部署。