Rust 编程中的 From 和 Into 特性
From 和 Into 是 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 }
广告