Rust 程式設計中的 From 和 Into 特性


FromInto 是 Rust 提供給我們的兩個特性。它們在內部是相互關聯的。

From 特性

當我們希望為一個特性定義如何從任何其他型別中建立自身時,我們使用 From 特性。它提供了一個非常簡單的機制,我們可以用它在幾種型別之間進行轉換。

例如,我們可以輕鬆地將 str 轉換為 String。

示例

考慮下面所示的示例

 即時演示

fn main() {
   let my_str = "hello";
   let my_string = String::from(my_str);
   println!("{}",my_string);
}

輸出

hello

我們甚至可以轉換我們自己的型別。

示例

考慮下面所示的示例

use std::convert::From;
#[derive(Debug)]
struct Num {
   value: i64,
}
impl From for Num {
   fn from(item: i64) -> Self {
      Num { value: item }
   }
}
fn main() {
   let num = Num::from(30);
   println!("My number is {:?}", num);
}

輸出

My number is Num { value: 30 }

Into 特性

Into 特性完全是 From 特性的倒數,它通常需要對要轉換成的型別進行說明,因為在大多數情況下,編譯器無法判斷這一點。

示例

考慮下面所示的示例

use std::convert::From;
#[derive(Debug)]
struct Num {
   value: i64,
}
impl From for Num {
   fn from(item: i64) -> Self {
      Num { value: item }
   }
}
fn main() {
   let int = 5;
   let num: Num = int.into();
   println!("My number is {:?}", num);
}

輸出

My number is Num { value: 5 }

更新於: 03-Apr-2021

263 次觀看

啟動你的 職業

完成課程,獲得認證

開始
廣告
© . All rights reserved.