rust学习笔记(3)
生活随笔
收集整理的這篇文章主要介紹了
rust学习笔记(3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
變量
- 變量默認是不可變的
- 不能使用沒有初始化的變量
作用域
變量離開作用域之后會直接釋放, 無法再次使用; 在內部代碼塊中定義的變量會導致外部的變量被遮蔽
類型轉換
部分類型可以隱式轉換, 部分類型需要使用 as 手動顯式轉換
let num_u32 = 100u32;
let num_i64 = num_u32 as i64;
From和Into
實現對應的接口可以方便進行類型轉換.
From和Into的函數接口是自動推斷和相互轉換的, 所以, 只需要實現From接口的from函數即可
struct Number {
value: i32,
}
impl From<i32> for Number {
fn from(value: i32) -> Self {
Number { value }
}
}
fn main() {
let number: Number = 42.into();
println!("The number is {}", number.value);
}
TryFrom和TryInto
當進行類型轉換的時候, 可能出現類型不能轉換的情況, 這個時候會拋出異常, 異常需要被處理, 所以, 應該使用 Result 作為返回值被接受
impl TryFrom<i32> for EvenNumber {
type Error = ();
fn try_from(value: i32) -> Result<Self, Self::Error> {
if value % 2 == 0 {
Ok(EvenNumber(value))
} else {
Err(())
}
}
}
to_string和from_string
實現了 Display 的接口之后的默認也是實現了 to_string 的方法
變量傳遞
使用 & 傳遞變量的引用
類型推斷
根據變量如何使用和變量初始化時候的賦值自動推斷
表達式計算變量
可以在 {} 中編寫表達式, 計算出來的結果會被賦值給變量
fn main() {
let x = 5u32;
let y = {
let x_squared = x * x;
let x_cube = x_squared * x;
// 將此表達式賦給 `y`
x_cube + x_squared + x
};
let z = {
// 分號結束了這個表達式,于是將 `()` 賦給 `z`
2 * x;
};
println!("x is {:?}", x);
println!("y is {:?}", y);
println!("z is {:?}", z);
}
這里的最后一個語句是一個表達式, 而不是完整的代碼語句, 并且不能攜帶
;, 不然會被賦值為()
總結
以上是生活随笔為你收集整理的rust学习笔记(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕电脑怎么分盘win10 华硕电脑Wi
- 下一篇: 联想e52怎么开启U盘启动 联想E52如