Rust Shadowing VS 可變變數

更新於 2024/12/21閱讀時間約 2 分鐘

先須知識:

  • 了解什麼是變數
  • 作用域scope

在Rust中,變數預設是不可變的

let name = "Zoe"; // 預設變數不可變

也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字:

let mut name = "Vicky";
name = "Alicia";

看似rust的mut variable和javascript的let宣告的variable相同,但其實還有個不同之處:

rust變數不可改變型別,不可變的變數不可改,可變的變數也不可改
let mut space = "     "
space = space.len();

會出現錯誤:error[E0308]: mismatched types

Shadowing 遮蔽

let name = "Vicky"
let name = "Alicia"

在Rust中想要改變一個變數的型別,必須藉由重新宣告的方式做到。在同名變數且相同scope中,新同名變數會被使用而忽略舊同名變數值的這種機制就稱為shadow,意味著前一個變數被後一個變數給遮蔽了,新的變數佔據了前面同名變數的使用權,直到他們也被更新的同名變數遮蔽或離開scope。

let mut number = "10";
let number = number.parse();
println!(number) // 10 數字

跟js比較

javascript變數介紹

javascript變數介紹

可以看到JS是不允許在同個scope中重複宣告同名變數,而Rust則允許,在Rust的使用情境多半是用在想要改變某個變數的型別時,這樣的特性能讓我們不用重複宣告類同名變數。

舉個例子而言,你的程式碼想把物件轉成陣列的形式,你無需新增各something_object跟something_array變數,只需要用一個something變數即可。


avatar-img
4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
JHIHLEI LIN的沙龍 的其他內容
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Once upon a time, inside a computer world, different programming languages and program characters all lived together happily……
Thumbnail
前傳:病毒趁停電之機入侵系統,破壞了Rust的代碼,使其失控並破壞其他程式。朋友們試圖幫助病毒改過自新,卻被其欺騙,導致問題加劇。最終,病毒掌控了Rust….. 某個夜晚,程式開發公司里一片漆黑。因為一場突如其來的停電,所有的安保系統和監控設備都停止了運轉。趁著無人看守的機會,一種潛伏
Thumbnail
人們來到島上,即使沒有接近海邊的習慣,總免不了會聊到海底的沉船。那樣巨大的貨輪降生到海底去,甲板周圍、欄杆與艦橋全部都受到海水侵蝕而變得鏽蝕脆弱,甚至斷成好幾個部件。
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
在開發 Rust 或是使用 Rust 編寫的 CLI 工具時,常會看見類似下方的錯誤訊息: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 簡單寫一下該怎麼做。
Thumbnail
對於剛學習 Rust 的人來說,最一開始不是看 Youtube 的影片或是跟著 Rust 官方手冊 The Book 學習,這邊來推薦一個練習 Rust 的專案,名為 rustlings。 rustlings 包含著一些簡單的題目,來讓你更習慣閱讀或編寫 Rust 程式碼。該專案會在每道題目上給予
Rust Remover 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https:
Thumbnail
由Faxdoc、Sunnydaze,、Happy squared共同開發的遊戲《鏽蝕苔蘚 Rusted Moss》,打破常規將「吊繩」結合「射擊」、「物理效果」及「類銀河戰士惡魔城」,嘗試帶給玩家全新的遊戲體驗。
Thumbnail
近期已經進去了一個看完語法,進去實作的階段,自然需要去挑選一個適合的環境來開發了。 原本使用的VS code,基本的使用上沒什麼問題,只是每當我要裝一些套件時就會報錯,相信花點時間,這些錯都可以解決,但我突然轉念一想,不如換個環境來寫寫看吧。於是就把矛頭轉向系統內建的Vim了。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Once upon a time, inside a computer world, different programming languages and program characters all lived together happily……
Thumbnail
前傳:病毒趁停電之機入侵系統,破壞了Rust的代碼,使其失控並破壞其他程式。朋友們試圖幫助病毒改過自新,卻被其欺騙,導致問題加劇。最終,病毒掌控了Rust….. 某個夜晚,程式開發公司里一片漆黑。因為一場突如其來的停電,所有的安保系統和監控設備都停止了運轉。趁著無人看守的機會,一種潛伏
Thumbnail
人們來到島上,即使沒有接近海邊的習慣,總免不了會聊到海底的沉船。那樣巨大的貨輪降生到海底去,甲板周圍、欄杆與艦橋全部都受到海水侵蝕而變得鏽蝕脆弱,甚至斷成好幾個部件。
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
在開發 Rust 或是使用 Rust 編寫的 CLI 工具時,常會看見類似下方的錯誤訊息: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 簡單寫一下該怎麼做。
Thumbnail
對於剛學習 Rust 的人來說,最一開始不是看 Youtube 的影片或是跟著 Rust 官方手冊 The Book 學習,這邊來推薦一個練習 Rust 的專案,名為 rustlings。 rustlings 包含著一些簡單的題目,來讓你更習慣閱讀或編寫 Rust 程式碼。該專案會在每道題目上給予
Rust Remover 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https:
Thumbnail
由Faxdoc、Sunnydaze,、Happy squared共同開發的遊戲《鏽蝕苔蘚 Rusted Moss》,打破常規將「吊繩」結合「射擊」、「物理效果」及「類銀河戰士惡魔城」,嘗試帶給玩家全新的遊戲體驗。
Thumbnail
近期已經進去了一個看完語法,進去實作的階段,自然需要去挑選一個適合的環境來開發了。 原本使用的VS code,基本的使用上沒什麼問題,只是每當我要裝一些套件時就會報錯,相信花點時間,這些錯都可以解決,但我突然轉念一想,不如換個環境來寫寫看吧。於是就把矛頭轉向系統內建的Vim了。