網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Rust 是一種低級(jí)靜態(tài)類型多范式編程語(yǔ)言,專注于安全性和性能,解決了 C/C++ 長(zhǎng)期以來(lái)一直在努力解決的問(wèn)題,例如內(nèi)存錯(cuò)誤和構(gòu)建并發(fā)程序。它具有以下三個(gè)優(yōu)點(diǎn):
1. 靠語(yǔ)法和編譯器技術(shù),做到了更好的內(nèi)存安全特性;
2. 防止數(shù)據(jù)競(jìng)爭(zhēng)的數(shù)據(jù)所有權(quán)模型,并發(fā)更容易;
3. 抽象沒(méi)有性能損失。
變量與可變性
在Rust中,哪怕你聲明的是一個(gè)變量,在默認(rèn)情況下也是不可更改的,如果改變量具有更改需求,那么需要使用 let
聲明的同時(shí)給予其可變性 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)都是不可變的
- 聲明常量的同時(shí)必須標(biāo)注其數(shù)據(jù)類型
- 常量可以在任何作用域中聲明,包括全局作用域
- 常量只能被綁定到常量表達(dá)式,不能被綁定到函數(shù)的調(diào)用結(jié)果或只能在運(yùn)行時(shí)才能計(jì)算出的值
- 在程序運(yùn)行期間,常量在其聲明的作用域內(nèi)一直有效
- 常量名建議大寫(xiě),每個(gè)獨(dú)立單詞之間使用下劃線分割開(kāi)來(lái)
fn main() { const X: char = '??'; println!("Hello, world! -- Hello {}", X); }
變量隱藏屬性
在Rust語(yǔ)言中變量有這樣一個(gè)特性:隱藏
也就是說(shuō)我們可以使用同名去聲明一個(gè)新的變量,新的變量會(huì)將之前聲明的變量隱藏,或者你可以理解為覆蓋?
隱藏和變量mut化是不一樣的,根本區(qū)別就是mut允許改變之前的變量值,而隱藏特性是再次聲明一個(gè)同名變量,隱藏之前的變量
在者說(shuō),如果我們不使用 let 關(guān)鍵字,那么重新給非 mut 變量賦值會(huì)導(dǎo)致編譯時(shí)的錯(cuò)誤,而使用 let 聲明的同名變量,也是不可變的
還有一個(gè)特性,就是我們使用 let 聲明的同名新變量的類型是沒(méi)有必要和之前的變量數(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 ??
就這個(gè)例子我們還可以體驗(yàn)一下Rust的安全以及規(guī)范
如果隱藏變量沒(méi)有被使用,那么編譯會(huì)報(bào)錯(cuò)
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前加上_ ??
原文鏈接:https://blog.csdn.net/weixin_63836026/article/details/127362458
相關(guān)推薦
- 2023-11-17 如何使python中線程等待其他線程完了再執(zhí)行;python-threading中的join方法;p
- 2021-12-15 CentOS下更新SQLite版本_SQLite
- 2022-05-06 python數(shù)據(jù)分析apply(),map(),applymap()用法_python
- 2022-07-04 基于ASP.NET實(shí)現(xiàn)單點(diǎn)登錄(SSO)的示例代碼_實(shí)用技巧
- 2022-05-24 python中的元組與列表及元組的更改_python
- 2022-09-03 C++中std::conditional的使用說(shuō)明_C 語(yǔ)言
- 2022-08-21 C語(yǔ)言實(shí)現(xiàn)棧的示例詳解_C 語(yǔ)言
- 2022-11-07 go?分布式鎖簡(jiǎn)單實(shí)現(xiàn)實(shí)例詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支