Rust 是一個靜態類型語言,這意味着咱們須要先肯定咱們須要的類型。安全
將一些值綁定到一個名字上,這樣能夠在以後使用他們。spa
使用 let 關鍵字:code
fn main() { let x = 1; }
關於類型:Rust有一個叫作類型推斷的功能。若是它能確認這是什麼類型,Rust 不須要你明確地指出來。blog
類型寫在一個冒號( : )後面:作用域
let x: i32 = 5;
類型都有哪些?(後面會進行連接)編譯器
綁定默認是不可變的,也就是不能被修改。例以下面的(錯誤)作法:編譯
let x = 5; x = 10;
若是想要使變量綁定可變,使用 mut :class
let mut x = 5; // mut x: i32 x = 10;
不止一個理由使得綁定默認不可變的,不過咱們能夠經過一個 Rust 的主要目標來理解它:安全。若是你沒有使用 mut ,編譯器會捕獲它,讓你知道你改變了一個你可能並不打算讓它改變的值。若是綁定默認是可變的,編譯器將不可能告訴你這
些。若是你確實想變量可變,解決辦法也很是簡單:加個 mut 。變量
變量綁定有一個做用域 - 他們被限制只能在他們被定義的塊中存在。一個塊是一個被 { 和 } 包圍的語句集合。語言
fn main() { let x: i32 = 17; { let y: i32 = 3; println!("The value of x is {} and value of y is {}", x, y); } println!("The value of x is {} and value of y is {}", x, y); // This won't work. } 咱們定義了兩個變量綁定, x 和 y ,他們位於不一樣的做用域中。 x 能夠在 fn main() {} 塊中被訪問,而 y 只能在內部塊內訪問。第一個 println! 將會打印「The value of x is 17 and the value of y is 3」,不過這個並 不能編譯成功,由於第二個 println! 並不能訪問 y 的值,由於它已不在做用域中。
一個後聲明的並位於同一做用域的相同名字的變量綁定將會覆蓋前一個變量綁定,隱藏容許咱們將一個名字重綁定爲不一樣的類型。它也能夠改變一個綁定的可變性。注意隱藏並不改變和銷燬被綁定的值,這個值會在離開做用域以前繼續存在,即
便沒法經過任何手段訪問到它。