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 }