使用Cargo工具高效創(chuàng)建Rust項(xiàng)目
前言
本文緊跟上篇Rust博文內(nèi)容,講解Cargo工具在Rust項(xiàng)目創(chuàng)建時(shí)的妙用,手把手教你使用Cargo工具在黑窗口創(chuàng)建項(xiàng)目。此外,創(chuàng)建項(xiàng)目之后,簡(jiǎn)單的做一個(gè)Rust語(yǔ)言中輸入輸出的測(cè)試,上文提到學(xué)好Rust語(yǔ)言的方法就是一步一步打基礎(chǔ),因此仍要潛心修煉,打牢基礎(chǔ)。
一、功能強(qiáng)大的Cargo工具
1、Cargo工具是什么?
Cargo
是Rust 的構(gòu)建系統(tǒng)和包管理工具,主要功能包括:- 創(chuàng)建和管理 Rust 的模塊系統(tǒng)
- 下載和管理依賴庫(kù)
- 調(diào)用rustc或其他構(gòu)建工具來(lái)構(gòu)建項(xiàng)目
- 安裝Rust 的時(shí)候會(huì)自動(dòng)安裝Cargo
- 驗(yàn)證的命令:
cargo --version
- 驗(yàn)證的命令:
2、使用Cargo命令創(chuàng)建 hello_cargo 項(xiàng)目
命令:cargo new hello_cargo
其中code .
是VSC工具的命令,意思是使用他來(lái)打開(kāi)項(xiàng)目文件:
可以看到Cargo工具為我們生成了其他的文件,具體看一下都是什么作用:
自動(dòng)創(chuàng)建了一個(gè)新目錄hello_cargo
,包含:
- Cargo.toml
- src目錄
main.rs
- 初始化了一個(gè)新的Git倉(cāng)庫(kù):
.gitignore
- 可以使用其他的
vcs
(版本控制系統(tǒng)) - 或者不適用vcs:
cargo new 項(xiàng)目名 --vcs
- 可以使用其他的
3、項(xiàng)目文件目錄里各文件的內(nèi)容和特點(diǎn)
- Cargo.toml
- TOML(Tom’s Obvious,Minimal Language)格式,存放Cargo的配置
- [package],是一個(gè)區(qū)域標(biāo)題,表示下方內(nèi)容是用來(lái)配置包的(package)
- name:項(xiàng)目名
- version:項(xiàng)目版本
- edition:使用的Rust版本
- [dependencies]
- 另一個(gè)區(qū)域的開(kāi)始,它會(huì)列出項(xiàng)目的依賴項(xiàng)。
- 在Rust里,代碼的包寫做:crate
2.src/main.rs
- cargo生成的 main.rs 在src目錄下,此外源代碼都應(yīng)該放在src目錄下
- 而cargo.toml在項(xiàng)目頂層下
- 頂層目錄可以放置:RENAME、許可信息、配置文件等
- 將非cargo創(chuàng)建的項(xiàng)目轉(zhuǎn)化為cargo的方法:
- 把源代碼移動(dòng)到src里面
- 創(chuàng)建cargo.toml并填寫相應(yīng)的配置
3.Cargo.lock
- 第一次執(zhí)行Cargo build命令會(huì)在頂層目錄生成 cargo.lock文件
- 該文件負(fù)責(zé)追蹤項(xiàng)目依賴的精確版本
- 不需要手動(dòng)修改此文件
4、Cargo 常用命令
- cargo build
- 創(chuàng)建可執(zhí)行文件:target\debug\hello_cargo.exe
- cargo run
- 構(gòu)建和運(yùn)行cargo項(xiàng)目,編譯代碼+執(zhí)行結(jié)果
- 如果之前編譯過(guò)且源碼沒(méi)有發(fā)生改變,則會(huì)直接運(yùn)行二進(jìn)制文件
- cargo check
- 檢查代碼,確保能夠通過(guò)編譯,但是不產(chǎn)生任何可執(zhí)行文件
- cargo check 要比 cargo build 快得多
- 編寫代碼得時(shí)候可以周期性得使用cargo check命令檢查代碼,提高效率
- cargo build --release
- 一共兩種配置:
- 開(kāi)發(fā)使用 :cargo build
- 正式發(fā)布: cargo build --release
- 為發(fā)布構(gòu)建,編譯時(shí)會(huì)進(jìn)行優(yōu)化
- 代碼運(yùn)行速度會(huì)更快,但是編譯時(shí)間長(zhǎng)
- 會(huì)在target/release 目錄下生成可執(zhí)行文件,而不是 target/debug
二、Rust 語(yǔ)言的輸入輸出
1、輸入輸出測(cè)試
源碼:
use std::io; fn main() { println!("測(cè)試輸入輸出功能"); println!("從鍵盤輸入一個(gè)數(shù)字:"); let mut a=String::new(); io::stdin().read_line(&mut a).expect("無(wú)法讀取行"); println!("輸出結(jié)果為:{}",a); }
運(yùn)行效果:
2、具體代碼解析
接下來(lái)把不熟悉的代碼依次解釋:
let mut a=String::new();
let
用來(lái)聲明變量,mut
代表該變量值可修改,String::new()
意思是調(diào)用String類的實(shí)例。
- 在Rust 中默認(rèn)變量不可修改,加上mut 才可以被修改
- new 在Rust 中常用來(lái)創(chuàng)建類型實(shí)例
- 這句話的意思就是將一個(gè)空白的字符串綁定到可變的字符串變量a上
use std::io; io::stdin().read_line(&mut a).expect("無(wú)法讀取行");
use
用來(lái)引入庫(kù),std::io
在Rust 中代表標(biāo)準(zhǔn)的輸入輸出,整體可理解為c中的#include<stdio.h>
,
在io庫(kù)調(diào)用stdin()類里的read_line()
方法,而該方法需要傳入可變字符串,因此將&mut a
傳入,
為什么要加地址符&
呢,這里啊用到了C++里的引用
,這樣參數(shù)列表里字符串的變化會(huì)修飾實(shí)參a的變化,且不會(huì)產(chǎn)生副本,安全高效。最后還有一個(gè)ecpect()
方法,read_line()方法會(huì)返回一個(gè)Result
枚舉類型,含有Ok 和 Err 兩個(gè)變體。
- 如果Result返回的是
Err
,那么expect()
方法就會(huì)中斷整行代碼并打印expect里的信息。 - 如果返回的是
OK
,那么就會(huì)把read_line()
方法中得到的值賦給OK一并返回給用戶。
println!("輸出結(jié)果為:{}",a);
類似于c 里的
printf("輸出結(jié)果為%d",a);
上面的{}
是一個(gè)占位符,輸出的時(shí)候會(huì)被后面變量的值取代,有幾個(gè){}
后面就有多少變量。
到此這篇關(guān)于使用Cargo工具高效創(chuàng)建Rust項(xiàng)目的文章就介紹到這了,更多相關(guān)Rust輸入輸出語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go調(diào)用Rust方法及外部函數(shù)接口前置
這篇文章主要為大家介紹了Go調(diào)用Rust方法及外部函數(shù)接口前置示例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Rust 語(yǔ)言中的 into() 方法及代碼實(shí)例
在 Rust 中,into() 方法通常用于將一個(gè)類型的值轉(zhuǎn)換為另一個(gè)類型,這通常涉及到資源的所有權(quán)轉(zhuǎn)移,本文給大家介紹Rust 語(yǔ)言中的 into() 方法及代碼實(shí)例,感謝的朋友跟隨小編一起看看吧2024-03-03Rust語(yǔ)言之結(jié)構(gòu)體和枚舉的用途與高級(jí)功能詳解
Rust 是一門注重安全性和性能的現(xiàn)代編程語(yǔ)言,其中結(jié)構(gòu)體和枚舉是其強(qiáng)大的數(shù)據(jù)類型之一,了解結(jié)構(gòu)體和枚舉的概念及其高級(jí)功能,將使你能夠更加靈活和高效地處理數(shù)據(jù),本文將深入探討 Rust 中的結(jié)構(gòu)體和枚舉,并介紹它們的用途和高級(jí)功能2023-10-10rust語(yǔ)言基礎(chǔ)pub關(guān)鍵字及Some語(yǔ)法示例
這篇文章主要為大家介紹了rust語(yǔ)言基礎(chǔ)pub關(guān)鍵字及Some語(yǔ)法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07利用rust實(shí)現(xiàn)一個(gè)命令行工具
這篇文章主要為大家詳細(xì)介紹了如何使用?Rust?和?clap?4.4.0?創(chuàng)建一個(gè)命令行工具?my_dev_tool,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2023-12-12MacBook Pro安裝rust編程環(huán)境的過(guò)程
rustup是一個(gè)用于管理Rust版本和工具鏈的工具,這篇文章主要介紹了MacBook Pro安裝rust編程環(huán)境的過(guò)程,感興趣的朋友跟隨小編一起看看吧2024-02-02Rust可迭代類型迭代器正確創(chuàng)建自定義可迭代類型的方法
在 Rust 中, 如果一個(gè)類型實(shí)現(xiàn)了 Iterator, 那么它會(huì)被同時(shí)實(shí)現(xiàn) IntoIterator, 具體邏輯是返回自身, 因?yàn)樽陨砭褪堑?這篇文章主要介紹了Rust可迭代類型迭代器正確創(chuàng)建自定義可迭代類型的方法,需要的朋友可以參考下2023-12-12一文學(xué)會(huì)Rust語(yǔ)言如何操作JSON
JSON在Web開(kāi)發(fā)中被廣泛應(yīng)用于數(shù)據(jù)交換,本文主要介紹了Rust語(yǔ)言操作JSON,包括序列化、反序列化、JSON創(chuàng)建等多個(gè)方面,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03