詳解Rust中的變量與常量
Rust 是一種低級靜態(tài)類型多范式編程語言,專注于安全性和性能,解決了 C/C++ 長期以來一直在努力解決的問題,例如內(nèi)存錯誤和構(gòu)建并發(fā)程序。它具有以下三個優(yōu)點(diǎn):
1. 靠語法和編譯器技術(shù),做到了更好的內(nèi)存安全特性;
2. 防止數(shù)據(jù)競爭的數(shù)據(jù)所有權(quán)模型,并發(fā)更容易;
3. 抽象沒有性能損失。
變量與可變性
在Rust中,哪怕你聲明的是一個變量,在默認(rèn)情況下也是不可更改的,如果改變量具有更改需求,那么需要使用 let 聲明的同時給予其可變性 mut
fn main() {
let mut x = "rust";
println!("Hello, world! -- Hello {}", x);
x = "test";
println!("Hello, world! -- Hello {}", x);
}
// Hello, world! -- Hello rust
// Hello, world! -- Hello test
常量
常量使用 const 關(guān)鍵字聲明,常量在綁定值之后也是不可以進(jìn)行更改的,但是它與不可變的變量有些區(qū)別:
- 不可以使用 mut 關(guān)鍵字,因?yàn)槌A坑肋h(yuǎn)都是不可變的
- 聲明常量的同時必須標(biāo)注其數(shù)據(jù)類型
- 常量可以在任何作用域中聲明,包括全局作用域
- 常量只能被綁定到常量表達(dá)式,不能被綁定到函數(shù)的調(diào)用結(jié)果或只能在運(yùn)行時才能計(jì)算出的值
- 在程序運(yùn)行期間,常量在其聲明的作用域內(nèi)一直有效
- 常量名建議大寫,每個獨(dú)立單詞之間使用下劃線分割開來
fn main() {
const X: char = '??';
println!("Hello, world! -- Hello {}", X);
}
變量隱藏屬性
在Rust語言中變量有這樣一個特性:隱藏
也就是說我們可以使用同名去聲明一個新的變量,新的變量會將之前聲明的變量隱藏,或者你可以理解為覆蓋?
隱藏和變量mut化是不一樣的,根本區(qū)別就是mut允許改變之前的變量值,而隱藏特性是再次聲明一個同名變量,隱藏之前的變量
在者說,如果我們不使用 let 關(guān)鍵字,那么重新給非 mut 變量賦值會導(dǎo)致編譯時的錯誤,而使用 let 聲明的同名變量,也是不可變的
還有一個特性,就是我們使用 let 聲明的同名新變量的類型是沒有必要和之前的變量數(shù)據(jù)類型相同的
fn main() {
let test = 66;
println!("Hello, world! -- Hello {}", test);
let test: char = '??';
println!("Hello, world! -- Hello {}", test);
}
// Hello, world! -- Hello 66
// Hello, world! -- Hello ??
就這個例子我們還可以體驗(yàn)一下Rust的安全以及規(guī)范
如果隱藏變量沒有被使用,那么編譯會報錯
fn main() {
let test = 66;
let test: char = '??';
println!("Hello, world! -- Hello {}", test);
}
// help: if this is intentional, prefix it with an underscore: `_test`
Rust提醒我了,如果我們是故意操作,需要在test前加上_ ??
到此這篇關(guān)于Rust中的變量與常量的文章就介紹到這了,更多相關(guān)Rust變量與常量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu)及模塊路徑詳解
在 Rust 中,標(biāo)準(zhǔn)庫提供了一組核心功能,以幫助開發(fā)者執(zhí)行常見的編程任務(wù),這個路徑樹可以作為參考,幫助你更好地理解 Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu)和模塊之間的關(guān)系,本文介紹 Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu),并提供相應(yīng)的 use 路徑,感興趣的朋友一起看看吧2024-05-05
利用Rust實(shí)現(xiàn)一個簡單的Ping應(yīng)用
這兩年Rust火的一塌糊涂,甚至都燒到了前端,再不學(xué)習(xí)怕是要落伍了。最近翻了翻文檔,寫了個簡單的Ping應(yīng)用練練手,感興趣的小伙伴可以了解一下2022-12-12
Rust如何使用Sauron實(shí)現(xiàn)Web界面交互
Sauron?是一個多功能的?Web?框架和庫,用于構(gòu)建客戶端和/或服務(wù)器端?Web?應(yīng)用程序,重點(diǎn)關(guān)注人體工程學(xué)、簡單性和優(yōu)雅性,這篇文章主要介紹了Rust使用Sauron實(shí)現(xiàn)Web界面交互,需要的朋友可以參考下2024-03-03
詳解Rust中三種循環(huán)(loop,while,for)的使用
我們常常需要重復(fù)執(zhí)行同一段代碼,針對這種場景,Rust?提供了多種循環(huán)(loop)工具。一個循環(huán)會執(zhí)行循環(huán)體中的代碼直到結(jié)尾,并緊接著回到開頭繼續(xù)執(zhí)行。而?Rust?提供了?3?種循環(huán):loop、while?和?for,下面逐一講解2022-09-09
Rust動態(tài)調(diào)用字符串定義的Rhai函數(shù)方式
Rust中使用Rhai動態(tài)調(diào)用字符串定義的函數(shù),通過eval_expression_with_scope實(shí)現(xiàn),但參數(shù)傳遞和函數(shù)名處理有局限性,使用FnCall功能更健壯,但更復(fù)雜,總結(jié)提供了更通用的方法,但需要處理更多錯誤情況2025-02-02

