- Mastering Rust
- Rahul Sharma Vesa Kaihlavirta
- 299字
- 2021-07-02 13:35:14
Declaring variables and immutability
Variables allow us to store a value and easily refer to it later in code. In Rust, we use the let keyword to declare variables. We already had a glimpse of it in the greet.rs example in the previous section. In mainstream imperative languages such as C or Python, initializing a variable does not stop you from reassigning it to some other value. Rust deviates from the mainstream here by making variables immutable by default, that is, you cannot assign the variable to some other value after you have initialized it. If you need a variable to point to something else (of the same type) later, you need to put the mut keyword before it. Rust asks you to be explicit about your intent as much as possible. Consider the following code:
// variables.rs
fn main() {
let target = "world";
let mut greeting = "Hello";
println!("{}, {}", greeting, target);
greeting = "How are you doing";
target = "mate";
println!("{}, {}", greeting, target);
}
We declared two variables, target and greeting. target is an immutable binding, while greeting has a mut before it, which makes it a mutable binding. If we run this program, though, we get the following error:

As you can see from the preceding error message, Rust does not let you assign to target again. To make this program compile, we'll need to add mut before target in the let statement and compile and run it again. The following is the output when you run the program:
$ rustc variables.rs
$ ./variables
Hello, world
How are you doing, mate
let does much more than assign variables. It is a pattern-matching statement in Rust. In Chapter 7, Advanced Concepts, we'll take a closer look at let. Next, we'll look at functions.
- PHP動態網站程序設計
- 零基礎搭建量化投資系統:以Python為工具
- Kali Linux Web Penetration Testing Cookbook
- Android Application Development Cookbook(Second Edition)
- Web Development with Django Cookbook
- Windows Presentation Foundation Development Cookbook
- 云計算通俗講義(第3版)
- Clojure for Machine Learning
- SciPy Recipes
- 新印象:解構UI界面設計
- R語言:邁向大數據之路(加強版)
- 微信小程序開發邊做邊學(微課視頻版)
- Thymeleaf 3完全手冊
- Performance Testing with JMeter 3(Third Edition)
- Python服務端測試開發實戰