Rust 编程中的从和进入特征
From和Into是Rust为我们提供的两个特性。它们是内在联系的。
从特质
当我们想要定义如何从任何其他类型创建自身的特征时,我们会使用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 }
进入特质
Intotrait正好是Fromtrait的倒数,它通常需要转换为类型的规范,因为大多数时候,编译器无法确定。
示例
考虑下面显示的示例:
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 }