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

相关文章
|
28天前
|
Rust 编译器 测试技术
30天拿下Rust之深入Cargo
30天拿下Rust之深入Cargo
23 0
|
2月前
|
Rust 编译器 开发者
Cargo:Rust的神秘助手,它将如何改变包管理游戏规则?
【8月更文挑战第31天】Rust的包管理器Cargo简化了依赖管理和构建过程,与编译器无缝集成,提供从依赖下载到编译构建的全套解决方案。通过`cargo new`创建项目后,编辑`Cargo.toml`文件即可轻松管理依赖。Cargo还支持自动生成文档、运行测试及发布代码,并通过`crates.io`平台方便查找和分享Rust库,是Rust生态系统中的重要工具,有助于提升开发者生产力。
49 1
|
2月前
|
开发者 C# Android开发
震惊!Xamarin 跨平台开发优势满满却也挑战重重,代码复用、熟悉语言与性能优势并存,学习曲线与差异处理何解?
【8月更文挑战第31天】Xamarin 与 C# 结合,为移动应用开发带来高效跨平台解决方案,使用单一语言和框架即可构建 iOS、Android 和 Windows 原生应用。本文通过问答形式探讨 Xamarin 和 C# 如何塑造移动开发的未来,并通过示例代码展示其实际应用。Xamarin 和 C# 的组合不仅提高了开发效率,还支持最新的移动平台功能,帮助开发者应对未来挑战,如物联网、人工智能和增强现实等领域的需求。
49 0
|
3月前
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
|
4月前
|
Rust 图形学
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
101 1
|
4月前
|
Rust Shell 索引
使用阿里云镜像加速Rust与Cargo安装及更新
使用阿里云镜像加速Rust与Cargo安装及更新
758 0
|
4月前
|
Rust Unix Windows
使用Cargo国内镜像提升Rust开发效率
使用Cargo国内镜像提升Rust开发效率
375 0
|
4月前
|
Rust
使用Cargo创建、编译与运行Rust项目
使用Cargo创建、编译与运行Rust项目
159 0
|
2月前
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
56 1
|
9天前
|
Rust 安全 网络安全
在 Rust 语言中,寻找企业上网行为管理软件的突破
在数字化企业环境中,上网行为管理软件对于保障网络安全和提升工作效率至关重要。Rust 语言凭借其安全性、高性能和并发性,为开发此类软件提供了新机遇。本文通过几个 Rust 代码示例,展示了如何实现网址检查、访问频率统计及访问控制等功能,旨在探索 Rust 在企业上网行为管理中的应用潜力。
16 0