環境
- Rust 1.56.0
- VSCode 1.60.2
概念
參考:https://doc.rust-lang.org/stable/rust-by-example/conversion/from_into.html
基礎類型可以通過 as
關鍵字進行轉換,如果是自定義類型,則通過 From 和 Into 進行轉換。
這兩個是 trait,可以理解為其它編程語言中的接口,他們是相關聯的。
示例
From
use std::convert::From;
#[derive(Debug)]
struct Number {
value: i32,
}
impl From<i32> for Number {
fn from(item: i32) -> Self {
Number { value: item }
}
}
fn main() {
let num = Number::from(30);
println!("My number is {:?}", num);
}
Into
如果實現了 From,則自動獲得了 Into,不過需要手動指明類型。
use std::convert::From;
#[derive(Debug)]
struct Number {
value: i32,
}
impl From<i32> for Number {
fn from(item: i32) -> Self {
Number { value: item }
}
}
fn main() {
let int = 5;
let num: Number = int.into();
println!("My number is {:?}", num);
}
總結
了解了 Rust 中的 From 和 Into trait,用來進行自定義類型轉換。