網站首頁 編程語言 正文
前言
本文緊跟上篇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
2.src/main.rs
- cargo生成的 main.rs 在src目錄下,此外源代碼都應該放在src目錄下
- 而cargo.toml在項目頂層下
- 頂層目錄可以放置:RENAME、許可信息、配置文件等
- 將非cargo創建的項目轉化為cargo的方法:
- 把源代碼移動到src里面
- 創建cargo.toml并填寫相應的配置
3.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);
上面的{}
是一個占位符,輸出的時候會被后面變量的值取代,有幾個{}
后面就有多少變量。
原文鏈接:https://blog.csdn.net/m0_58618795/article/details/126215276
相關推薦
- 2022-05-12 python遍歷文件夾內文件并檢索文件中的中文內容
- 2023-04-24 numpy.reshape()的函數的具體使用_python
- 2022-07-06 python如何刪除字符串最后一個字符_python
- 2022-10-10 python使用pandas讀寫excel文件的方法實例_python
- 2022-08-06 Python?pandas庫中isnull函數使用方法_python
- 2022-09-28 Dephi逆向工具Dede導出函數名MAP導入到IDA中的實現方法_python
- 2022-04-17 小程序 底部懸浮的輸入框聚焦的時候 鍵盤緊貼輸入框
- 2022-10-10 GO必知必會的常見面試題匯總_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支